Csharp/C#教程:从剃刀获取控制器名称分享


从剃刀获取控制器名称

我似乎很难得到一些应该很容易的东西。 在我看来,使用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

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐