ASP .NET MVC 3 +从不同的控制器调用 HttpPost 操作方法
我目前正在 VS2010 下开发一个完整的 Web 应用程序,并且使用 ASP .NET MVC 3 框架。
以下是我的应用程序的简化概述:
- 我已经实现了一个控制器 Ctrl1。
- Ctrl1 包含 HttpGet 操作方法 ActMeth1。
- Ctrl1Views 文件夹包含视图 View1。
- Ctrl1 包含 HttpGet 操作方法 ActMeth1。
- 我已经实现了一个控制器 Ctrl2。
- Ctrl2 包含 HttpPost 操作方法 ActMeth2。
- ActMeth2 返回 Ctrl2Views 文件夹中包含的视图 View2。
- Ctrl2 包含 HttpPost 操作方法 ActMeth2。
- Ctrl1 和 Ctrl2 位于同一命名空间中。
我希望 ActMeth1 调用 ActMeth2 执行一些逻辑,然后返回 View2。
以下是 ActMeth1 的源代码:
public ActionResult ActMeth1()
{
Ctrl2 myCtrl2 = new Ctrl2();
return myCtrl2.ActMeth2();
}
不幸的是 ActMeth1 返回 View1。
有人可以给我解释一下这个事实吗?
预先感谢您未来的帮助
I am currently developping a full-web application under VS2010 and I am using the ASP .NET MVC 3 framework.
Here is a simplified overview of my application :
- I have implemented a controller Ctrl1.
- Ctrl1 contains a HttpGet action method ActMeth1.
- The Ctrl1Views folder contains a view View1.
- Ctrl1 contains a HttpGet action method ActMeth1.
- I have implemented a controller Ctrl2.
- Ctrl2 contains a HttpPost action method ActMeth2.
- ActMeth2 returns a view View2 included in the Ctrl2Views folder.
- Ctrl2 contains a HttpPost action method ActMeth2.
- Ctrl1 and Ctrl2 are in the same namespace.
I want ActMeth1 to call ActMeth2 to perform some logic and then to return View2.
Here is the source code of ActMeth1 :
public ActionResult ActMeth1()
{
Ctrl2 myCtrl2 = new Ctrl2();
return myCtrl2.ActMeth2();
}
Unfortunately ActMeth1 returns View1.
Does someone can give me an explanation to this fact ?
Thanks in advance for your future help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从长远来看,在另一个控制器的操作方法中实例化一个控制器的操作方法会带来麻烦。
您可以使用tempdata,或通过RedirectToAction的路由字典传递数据。
我认为你最好重新组织你的逻辑,
因为无论如何你都试图在服务器端执行此逻辑,
a。创建一个为两个控制器执行工作的服务
b.使视图在两个控制器操作之间共享或为公共 html 创建部分视图
c.调用适当的服务方法并渲染共享视图
Instantiating a controller's action method in another controller's action method is inviting trouble in the long run.
You can use tempdata, or pass the data via route dictionary of RedirectToAction.
I think you better reorganize your logic
As you are trying to do this logic in server side anyway,
a. Create a service that does the work for both the controllers
b. make the view shared between both the controller actions or create a partial view for the common html
c. Call the appropriate service method and render the shared view
你可以这样做:
我不确定你应该从控制器 1 内部实例化控制器 2...
You could do:
I'm not sure you should be instantiating controller 2 from inside controller 1 though...