如何获取控制器索引的Viewbag标题?
例如,如果我在mysite.com/MyController/MyAction
,我想从控制器索引渲染Viewbag标题,为mysite.com/MyController
。
索引的Viewbag标题是“我的控制器”。
我试图获取控制器名称并将其呈现为字符串,尽管这并不理想。我使用以下方法做到了这一点:
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString())
答案 0 :(得分:1)
我认为你指的是在razor view / C#代码块中填充的Viewbag.title。 Viewbag.title或viewbag.ANYTHING在控制器方法中编码或在视图中设置.cshtml,路由或任何其他MVC页面处理不会在ViewBag中设置任何值。
您可以像这样获得路线值:
RouteData route = RouteTable.Routes.GetRouteData(httpContext);
UrlHelper urlHelper = new UrlHelper(new RequestContext(httpContext, route));
var routeValueDictionary = urlHelper.RequestContext.RouteData.Values;
这个SO答案也有帮助: ASP.NET MVC C# Get controller and action name in class