ASP.NET MVC Controller 是否可以创建不同 Controller 的新实例并有效地委派责任?
例如,假设我在/Controllers/目录中有两个 Controller :
public class HomeController : Controller
{
public ActionResult Index()
{
var otherController = new OtherController();
return otherController.ShowNumberOfThings(100);
}
}
public class OtherController : Controller
{
public ActionResult ShowNumberOfThings(int index)
{
return View(index);
}
}
...和一个名为 Views/Other/ShowNumberOfThings.aspx 的 View :
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<int>" %>
Number of things: <%= Model.ToString() %>
当我点击网址时:
http://localhost/Home/Index
我想看到一个页面,上面写着:
“事物数量:100”
我希望能够在 Controller 重定向之间保留临时数据,而不必被迫使用 session 对象(TempData[""] 使用 session 对象进行跨 Controller 重定向)。我的真实案例有一个复杂的对象,它需要传递(不仅仅是一个 int),所以使用 URL/Cookie 是不可能的, session 状态是禁止的。
在 WebForms 中,至少我们可以使用 Server.Transfer 并维护 HttpContext.Items 集合中的任何状态。在 MVC 中,我能看到的唯一选择是直接调用 Controller 方法并传入所需的参数。
目前它在尝试解析 View 文件夹时遇到了麻烦,因为“上下文”仍在 HomeController 下运行。
我想我的目的是试图让 ASP.NET MVC 表现得像 FrontContoller .
有任何想法吗?
编辑
最后,我们必须将所有内容序列化为一个 session 并使用它。很遗憾,但我听说 MVC2 将支持将对象序列化为 ViewState。
最佳答案
如果您想在点击 Index 操作时显示“事物数量:100”,为什么不直接渲染相应的 View :
public class HomeController : Controller
{
public ActionResult Index()
{
return View("~Views/Other/ShowNumberOfThings.aspx", 100);
}
}
关于asp.net-mvc - .NET MVC 在另一个 Controller 中实例化 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1498293/