Можно ли запретить использование общего макета для сообщений об ошибках? - PullRequest
2 голосов
/ 19 декабря 2011

Я использую общий файл макета, настроенный в _ViewStart.cshtml, для большей части моего сайта. Что-то вроде:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

На большинстве страниц моего сайта и на страницах отчетов об ошибках почти нет информации. Как я могу различить две ситуации?

Я бы хотел, чтобы общий макет загружался для всех страниц, кроме любых отчетов об ошибках.

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

вы можете изменить макет для каждой страницы / просмотра

@{
  var model = ViewContext.Controller.ViewData.Model;
  if (model is System.Web.Mvc.HandleErrorInfo) {
    Layout = "";
  } else {
    Layout = "~/Views/Shared/_Layout.cshtml"; 
  }
}

Это с моей страницы Post.vbhtml - мне просто нужно изменить страницу макета, чтобы использовать другой макет.

1 голос
/ 19 декабря 2011

Для завершения этого вопроса есть популярное, иногда неправильное решение, представленное ниже.Выберите с осторожностью, используйте принятый ответ, если вы не уверены .


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * принят ответ и популярная альтернатива ниже .Альтернатива ниже приводит к результату, который выглядит правильным в большинстве случаев, но не всегда работает .По-видимому, это связано с порядком загрузки и выполнением файлов представлений - самый верхний общий вид загружается и выполняется первым.Если у этого первого процесса load + execute есть побочные эффекты, это решение сломается странными и важными способами.

_ ViewStart.cshtml

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Покажите соответствующие представленияне использовать макет, добавив следующее в верхнюю часть файлов просмотра:

ErrorView.cshtml

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