asp.net-mvc - .NET MVC 在另一个 Controller 中实例化 Controller

标签 asp.net-mvc controller

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/

相关文章:

javascript - 在Rails中,我可以在JS响应后在 Controller 操作中执行ActionMailer逻辑吗?

来自 JSON POST 正文的 Grails 2.5.0 Controller 操作方法参数

asp.net-mvc - 如何将数据库中的值显示到mvc中的布局页面中

c# - 如何在MVC 5上实现索引和创建在同一个页面?

javascript - 使用 Json.Net 序列化 Entity Framework 对象

ASP.NET (MVC) - 将页面渲染到文件

javascript - 为什么我的 Controller 方法不可用?

asp.net-mvc - MVC RouteLink 中的 HTML

c# - 异常时通知用户

java - 在 spring Controller 中处理一些自定义验证