dev*_*ric 5 asp.net-core-mvc asp.net-core
我可以_Layout.cshtml 通过执行以下操作获取当前控制器名称和操作名称
var controller = ViewContext.RouteData.Values["controller"].ToString();
var action = ViewContext.RouteData.Values["action"].ToString();
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试获得该区域
var area = ViewContext.RouteData.Values["area"].ToString();
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为该对象中只存在2个键("控制器"和"动作")
我检查了ViewContext.RouteData对象,无法获取当前Area名称的值.
之前版本的先前答案ASP.net对我不起作用.
Shy*_*yju 13
感谢Pranav的评论!GetNormalizedRouteValue方法现在是公开的.因此,RazorViewEngine.GetNormalizedRouteValue当您将密钥作为"区域"传递时,可以在视图中将方法调用为区域名称.
<h2> @RazorViewEngine.GetNormalizedRouteValue(ViewContext, "area") </h2>
Run Code Online (Sandbox Code Playgroud)
RazorViewEngineclass属于Microsoft.AspNetCore.Mvc.Razornamespace.因此,请确保在视图中使用using语句导入该语句.
@using Microsoft.AspNetCore.Mvc.Razor
Run Code Online (Sandbox Code Playgroud)
GetNormalizedRouteValue方法与前一版本的答案中解释的相同.你可以在这里看到源代码
这完全适用于剃须刀(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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2917 次 |
| 最近记录: |