获取当前的控制器
我有一个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
这会给你整个控制器的名字