В Razor Pages файл _Layout.chstml включен по умолчанию (насколько я знаю, где-то есть настройка). Если вам не нужен шаблон _Layout на странице Razor, вы помещаете:
@{
Layout = null;
}
Однако в представлении MVC вы ссылаетесь на _Layout.chstml:
@{
ViewBag.Title = "ThankYou";
Layout = "~/Views/Shared/_Layout.cshtml";
}
Я даже не уверен, что можно использовать тот же _Layout. Я надеюсь на это и что у меня просто нет синтаксиса маршрута для представлений внутри приложения Razor Pages (.NET Core 2.2 Razor Pages).
Я старался:
@{
ViewBag.Title = "ThankYou";
Layout = "/Shared/_Layout.cshtml";
}
Но это вызвало ошибку Not Found.
Предполагая, что вы хотите использовать макет Razor Pages в представлении MVC, используйте виртуальный путь к файлу, как в вашем примере MVC:
@{
ViewBag.Title = "ThankYou";
Layout = "~/Pages/Shared/_Layout.cshtml";
}
Между прочим, «настройка» страницы макета в приложении Razor Pages находится в файле файл _ViewStart.cshtml. версия по умолчанию включает следующее содержимое:
@{
Layout = "_Layout";
}
RouteData существует, но значение page
относится только к Razor Pages. Его нет в представлениях MVC.
Я понял, как поймать проблему с нулевой ссылкой. Я меняю класс контейнера на жидкость для 2 страниц с очень широкими таблицами. Я использую эту проверку: var pageRoute = ""; if (ViewContext.RouteData.Values["page"]==null) { //ОСТАВИТЬ pageRoute ALONE } else { pageRoute = ViewContext.RouteData.Values["page"].ToString(); }
На моей странице _Layout я получаю ошибку нулевой ссылки в строке, которая ссылается на RouteData: "var pageRoute = ViewContext.RouteData.Values["page"].ToString();" Итак, я приму ваш ответ, но мне нужно выяснить, как обойти отсутствие RouteData.