如何在 RenderAction 中获得实际的“主 Controller ”?
例子:
我的路线:
{controller}/{action}
我的网址是:
页面/某个 Action
旅游/一些 Action
...
在我的 Site.Master 中,我做了一个 RenderAction:
<% Html.RenderAction("Index", "BreadCrumb"); %>
我的 BreadCrumbController Action 如下所示:
public ActionResult Index(string controller)
{
}
字符串 Controller 包含“BreadCrumb”(这是可以理解的,因为实际上我在 BreadCrumbController 中)。
获得“真实” Controller (例如页面或游览)的最佳方式是什么。
最佳答案
父 View / Controller 上下文
如果您使用 MVC 2 RC(不知道以前的版本),您可以通过 View 的上下文访问父 Controller ,在那里您将找到一个名为:
ViewContext ParentActionViewContext;
这是父 View 的上下文,并且还引用了启动 View 渲染的 Controller ...
路由
在我看来(从你的问题)你有任意数量的路由段的请求......在这种情况下,你有两个选择:
actions
在这种情况下,将捕获请求 URL 中的所有操作{controller}/{*actions}
Route
将处理您的自定义路由要求并填充 RouteData
的类如所须。 第二个需要更多的工作和路由知识,但它将帮助您获得更多有关 Asp.net MVC 路由的知识。我过去做过,这是一个宝贵的教训。也是一种处理我的自定义路线要求的优雅方式。
关于asp.net-mvc - ASP.NET MVC : get "Main-Controller" in RenderAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/867649/