ASP .NET MVC 3 +从不同的控制器调用HttpPost操作方法

时间:2012-01-18 10:23:43

标签: asp.net-mvc-3 controller http-post actionmethod

我目前正在VS2010下开发一个完整的Web应用程序,我正在使用ASP .NET MVC 3框架。

以下是我的应用程序的简要概述:

  • 我已经实现了控制器Ctrl1。
    • Ctrl1包含一个HttpGet操作方法ActMeth1。
      • Ctrl1Views文件夹包含View1视图。
  • 我已经实现了控制器Ctrl2。
    • Ctrl2包含一个HttpPost操作方法ActMeth2。
      • ActMeth2返回包含在Ctrl2Views文件夹中的视图View2。
  • Ctrl1和Ctrl2位于同一名称空间中。

我希望ActMeth1调用ActMeth2来执行某些逻辑,然后返回View2。

以下是ActMeth1的源代码:

public ActionResult ActMeth1()
{
    Ctrl2 myCtrl2 = new Ctrl2();
    return myCtrl2.ActMeth2();
}

不幸的是,ActMeth1返回View1 有人可以给我一个解释这个事实吗? 在此先感谢您的未来帮助

2 个答案:

答案 0 :(得分:1)

在另一个控制器的操作方法中实例化控制器的操作方法从长远来看会引发麻烦。

您可以使用tempdata,或通过RedirectToAction的路线词典传递数据。

我认为你最好重新整理你的逻辑

正如您在服务器端尝试执行此逻辑一样,

一个。创建一个服务,为两个控制器完成工作 湾使视图在两个控制器操作之间共享或为常见的html创建局部视图 C。调用适当的服务方法并呈现共享视图

答案 1 :(得分:0)

你可以这样做:

public ActionResult ActMeth1()
{
    Ctrl2 myCtrl2 = new Ctrl2();
    myCtrl2.ActMeth2();
    return View("~/Views/Ctrl2Views/View2.cshtml");
}

我不确定你应该从控制器1内部实例化控制器2,但是......