gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:18:53 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com