Ice*_*ind 44 c# asp.net-mvc razor asp.net-mvc-5
我似乎很难得到一些应该很容易的东西.在我看来,使用Razor,我想得到当前控制器的名称.例如,如果我在这里:
http://www.example.com/MyController/Index
Run Code Online (Sandbox Code Playgroud)
如何MyController从Razor表达式获取控制器名称:
@* Obviously this next line doesn't work
@Controller.Name
*@
Run Code Online (Sandbox Code Playgroud)
我是MVC的新手,所以如果这是一个明显的答案,请不要攻击我.
Kot*_*nga 79
@{
var controllerName = this.ViewContext.RouteData.Values["controller"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
要么
@{
var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
Ext*_*rey 38
Koti Panga答案的附录:他提供的两个例子并不等同.
这将返回处理执行此代码的视图的控制器的名称:
var handlingController = this.ViewContext.RouteData.Values["controller"].ToString();
Run Code Online (Sandbox Code Playgroud)
这将返回URL中请求的控制器的名称:
var requestedController = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
Run Code Online (Sandbox Code Playgroud)
虽然在大多数情况下这些肯定是相同的,但在某些情况下,您可能位于属于不同控制器的局部视图内,并且希望在链中获得控制器的名称"更高级",在这种情况下,第二种方法是必需的.
例如,假设您有一个部分视图负责呈现网站的菜单链接.所以,在你的网站的每个页面,链接准备,并通过从称为操作视图SiteMenuPartial中LayoutController.
因此,当您加载时/Home/Index,将检索布局页面,布局页面将调用该SiteMenuPartial方法,并SiteMenuPartial.cshtml返回部分视图.如果在该局部视图中,您要执行以下两行代码,则它们将返回显示的值:
/* Executes at the top of SiteMenuPartial.cshtml */
@{
// returns "Layout"
string handlingController = this.ViewContext.RouteData.Values["controller"].ToString();
// returns "Home"
string requestedController = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
小智 7
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
Run Code Online (Sandbox Code Playgroud)
MVC 3
@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
Run Code Online (Sandbox Code Playgroud)
MVC 4.5
@ViewContext.RouteData.Values["controller"].ToString();
Run Code Online (Sandbox Code Playgroud)
消除ToString()呼叫使用的需要
@ViewContext.RouteData.GetRequiredString("controller")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39192 次 |
| 最近记录: |