asp.net-core - 如何在 ASP.NET Core 的 .cshtml 文件中获取当前 MVC 区域名称

标签 asp.net-core asp.net-core-mvc

我可以在 _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/

相关文章:

c# - 在 ASP.NET 5 RC1 中从 Tag Helper 访问路由数据

razor - 如何将 <select> 值绑定(bind)到 ASP.NET Core MVC 中枚举中每个项目的名称?

visual-studio - 在 Blazor 中以编程方式注册页面,而不是使用 LazyAssemblyLoader 使用 @page 指令

javascript - 尝试从 API Controller 重定向时出现错误 302

azure - 使用Windows Azure上托管的asp.net 5.0应用程序上传大文件(> 4MB)

c# - System.AggregateException : 'Some services are not able to be constructed' In my ASP. 网络核心

asp.net - 将MVC5项目升级到MVC6

c# - 增加Asp.Net core中上传文件的大小

angular - asp net core - 请求的资源上不存在 'Access-Control-Allow-Origin' header

c# - .net 核心 MVC knockout c#