Жизненный цикл страницы Razor в ASP.NET MVC

Мой вопрос в целом о рендеринг конвейера, я видел схему конвейера ASP.NET MVC и был шаг, называемый View Engine, и как он работает? Я хочу знать об этих сценариях:

  • Что отображается вначале, главной странице или представлении?
  • Если я использую Response.End() в @{} в начале страницы, выполняется ли это прерывание выполнения страницы и прекращает визуализацию представления?

Ответ 1

Что отображается первая, главная страница или просмотр?

Вид. Парсер начинается с макета и строит структуру LIFO (Last In First Out), рекурсивную вниз к дочерним представлениям и частичным. Когда LIFO готов, он начинает выходить и обрабатывать элементы. Это означает, что внутренние частичные представления/представления будут обработаны до того, как макет, а последний обработанный - это сам макет.

Если я использую Response.End() в блоке @{} в начале страницы, это делает прерывание выполнения страницы и прекращение рендеринга представления?

Использование Response.End в любом представлении приведет к визуализации полностью пустой страницы. Никогда не используйте в любом режиме. Response.End в основном прерывает текущий поток, вызывая ThreadAbortException, который не является тем, что вы хотите сделать в своих представлениях Razor.

Ответ 2

Взгляните на Стива Сандерсона Запрос на оформление плаката с трубопроводом. Он объясняет весь процесс запроса довольно подробно. Это от MVC версии 1.0, но оно все еще актуально. Просто замените "WebForm" на Razor.

На самом деле не стоит беспокоиться о том, сделан ли мастер или представление в первую очередь. Не могли бы вы объяснить, почему это имеет значение для вас?