如何在Asp.NET Core中渲染不同的布局

时间:2018-05-05 12:34:41

标签: c# asp.net-core

我想在我的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

1 个答案:

答案 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这意味着"不要使用布局"。