我想在我的asp.net核心应用程序中的某些页面上呈现空白布局。为此,我在_ViewStart.cshtml
中使用了此代码。
@{
var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"].ToString();
string cLayout = "";
if (controller == "Empty")
{
cLayout = "~/Views/Shared/_Empty_Layout.cshtml";
}
else
{
cLayout = "~/Views/Shared/_Layout.cshtml";
}
Layout = cLayout;
}
此代码适用于Asp.NET MVC App
但它在.NET Core App
中出错。错误为The name 'HttpContext' does not exist in the current context
答案 0 :(得分:3)
HttpContext.Current
是微软的一个非常糟糕的主意,幸运的是,不已迁移到ASP.NET Core。
您可以像这样访问RouteData
:
@Url.ActionContext.RouteData.Values["Controller"]
// or
@ViewContext.RouteData.Values["Controller"]
那就是说,"空白布局"听起来你根本不需要布局。如果是这种情况,请使用:
@{
var controller = ViewContext.RouteData.Values["Controller"].ToString();
string layout = null;
if (controller != "Empty")
{
layout = "~/Views/Shared/_Layout.cshtml";
}
Layout = layout;
}
null
这意味着"不要使用布局"。