我的View - _Edit
住在News M/V/C
。
我通过V/M
重新使用CategoryController
作为:
return PartialView("/Views/News/_Edit.cshtml", model);
如何从View - _Edit
中提醒控制器名称?
当我:
alert('@ViewContext. RouteData.Values["controller"].ToString()');
价值是:News
但是,网址为:/Category/foobar
有没有办法让值'Category'
提醒?感谢
答案 0 :(得分:189)
我把这个放在我的部分观点中:
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
在您描述的同一种情况下,它会显示URL中描述的控制器(您的类别,适合我的产品),而不是部分视图的实际位置。
所以请改用此提醒:
alert('@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()');
答案 1 :(得分:115)
我是这样做的,但也许它只是ASP.NET MVC 4
@ViewContext.RouteData.Values["controller"]
答案 2 :(得分:21)
为所有控制器创建基类,并在此处放置名称属性:
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"; }
}
答案 3 :(得分:13)
在View
中获取当前Controller名称的其他方法@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
答案 4 :(得分:2)
即使您从CategoryController
文件夹中加载PartialView
,您仍然在Views/News
的上下文中。
答案 5 :(得分:2)
只需使用:
ViewContext.Controller.GetType().Name
这将为您提供整个控制器的名称
答案 6 :(得分:0)
您可以使用以下任何代码获取控制器名称
@ HttpContext.Current.Request.RequestContext.RouteData.Values ["控制器&#34]。的ToString();
如果您使用的是MVC 3,则可以使用 @ ViewContext.Controller.ValueProvider.GetValue("控制器&#34)。RawValue
答案 7 :(得分:0)
对于当今(最新版本)ASP.NET Core MVC
的任何人,您可以使用:
@Context.Request.RouteValues["controller"].ToString()