从剃刀获取控制器名称
我似乎很难得到一些应该很容易的东西。 在我看来,使用Razor,我想得到当前控制器的名称。 例如,如果我在这里:
https://www.example.com/MyController/Index
如何从Razor表达式获取控制器名称MyController
:
@* Obviously this next line doesn't work @Controller.Name *@
我是MVC的新手,所以如果这是一个明显的答案,请不要攻击我。
@{ var controllerName = this.ViewContext.RouteData.Values["controller"].ToString(); }
要么
@{ var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString(); }
Koti Panga答案的附录:他提供的两个例子并不等同。
var controllerName = this.ViewContext.RouteData.Values["controller"].ToString();
这将返回处理执行此代码的视图的控制器的名称,而
var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
这将返回URL中请求的控制器的名称。
虽然在大多数情况下这些肯定是相同的,但在某些情况下,您可能位于属于不同控制器的局部视图内,并希望在链中获得控制器的名称“更高级”,在这种情况下,第二种方法是必需的。
(抱歉将此作为单独的答案发布;我还没有声誉对他发表评论。)
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
MVC 3
@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
MVC 4.5
@ViewContext.RouteData.Values["controller"].ToString();
要删除需要ToString()
调用使用
@ViewContext.RouteData.GetRequiredString("controller")
此外,如果您想获得完整控制器的名称(“Controller”结尾),您可以使用:
ViewContext.Controller.GetType().Name
@ ViewContext.RouteData.Values [ “控制器”]的ToString();
上述就是C#学习教程:从剃刀获取控制器名称分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1010430.html