我可以在 _Layout.cshtml
中获取当前 Controller 名称和操作名称通过执行以下操作
var controller = ViewContext.RouteData.Values["controller"].ToString();
var action = ViewContext.RouteData.Values["action"].ToString();
但是,当我尝试获取该区域时
var area = ViewContext.RouteData.Values["area"].ToString();
它不起作用,因为该对象中仅存在 2 个键(“ Controller ”和“ Action ”)
我检查了
ViewContext.RouteData
对象并且无法获取当前区域名称的值。previous answers对于
ASP.net
的早期版本不要为我工作。
最佳答案
感谢普拉纳夫的评论! GetNormalizedRouteValue
方法is now public .所以你可以调用RazorViewEngine.GetNormalizedRouteValue
当您将 key 作为“区域”传递时,您可以查看区域名称中的方法。
<h2> @RazorViewEngine.GetNormalizedRouteValue(ViewContext, "area") </h2>
RazorViewEngine
类属于 Microsoft.AspNetCore.Mvc.Razor
命名空间。所以确保你有一个 using 语句来在你的 View 中导入它。@using Microsoft.AspNetCore.Mvc.Razor
GetNormalizedRouteValue
方法与之前版本的答案中解释的相同。您可以see the source code这里在 Razor View (MVC6)中,这对我完全有用。
@using Microsoft.AspNet.Routing
@{
var myAreaName = string.Empty;
object areaObj;
if (ViewContext.RouteData.Values.TryGetValue("area", out areaObj))
{
myAreaName = areaObj.ToString();
}
}
<h1>@myAreaName</h1>
关于asp.net-core - 如何在 ASP.NET Core 的 .cshtml 文件中获取当前 MVC 区域名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602805/