Как визуализировать различные макеты в Asp.NET Core - PullRequest
0 голосов
/ 05 мая 2018

Я хочу отобразить пустой макет на некоторых страницах в моем основном приложении 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 голосов
/ 05 мая 2018

HttpContext.Current была очень плохой идеей от Microsoft, которая, к счастью, была не перенесена в 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 здесь означает «не использовать макет».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...