获取当前的控制器

我有一个View - _Edit ,它位于News M/V/C

我通过CategoryController重用V/M ,如下所示:

 return PartialView("/Views/News/_Edit.cshtml", model); 

如何从View - _Edit我可以提醒控制器名称?

当我:

 alert('@ViewContext. RouteData.Values["controller"].ToString()'); 

价值是: News然而,URL是: /Category/foobar

有没有办法让价值'Category'提醒? 谢谢

我把这个看成是我的局部看法:

 @HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() 

在您描述的同一种情况下,它显示URL中描述的控制器(类别为您,产品为我),而不是部分视图的实际位置。

因此,请使用此警报:

 alert('@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()'); 

我这样做,但也许它只是ASP.NET MVC 4

 @ViewContext.RouteData.Values["controller"] 

创build所有控制器的基类,并在这里放置name属性:

 public abstract class MyBaseController : Controller { public abstract string Name { get; } } 

鉴于

 @{ var controller = ViewContext.Controller as MyBaseController; if (controller != null) { @controller.Name } } 

控制器例子

  public class SampleController: MyBaseController { public override string Name { get { return "Sample"; } } 

在View中获取当前控制器名称的其他方法

 @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue 

即使您正在从Views/News文件夹加载部分Views/News ,您仍然在您的CategoryController PartialView的上下文中。

您可以使用下面的任何代码来获取控制器名称

。@ HttpContext.Current.Request.RequestContext.RouteData.Values [ “控制器”]的ToString();

如果您使用的是MVC 3,则可以使用@ViewContext.Controller.ValueProvider.GetValue(“controller”)。RawValue

只要使用:

 ViewContext.Controller.GetType().Name 

这会给你整个控制器的名字