ViewStart и Layout - какая разница?

Я только что начал читать книгу ASP.NET MVC 4 и получил один вопрос. В статье Razor автор сказал, что если я не установлю переменную Layout в файле View.cshtml, она будет по умолчанию искать _ViewStart.cshtml, но в другой части он использует _Layout.cshtml в Views/Shared, я не получаю его.

Если я получил smth, как это в View.cshtml:

@{
     Layout = null;
 }

Он сообщает, что этот вид не имеет макета, но если я делаю это так:

@{

 }

Итак, это приведет к тому, что View будет искать файл _ViewStart.cshtml или _Layout.cshtml?

Ответы

Ответ 1

В основном по умолчанию у нас есть макет в Просмотры → Shared → _Layout.cshtml, и эта вещь определена в _ViewStart.cshtml, которая является нашим основным по умолчанию макета.

Когда мы создаем представление с макетом макета по умолчанию, его макет макета _Layout.cshtml, но мы можем изменить его с _ViewStart.cshtml

Когда мы пишем:

@{
     Layout = null;
 }

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

Если вы открываете _ViewStart.cshtml по умолчанию, это написано на нем:

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

и мы можем изменить его, если хотим.

Вы также можете изменить какой-либо определенный макет основного макета, написав над ним URL-адрес макета макета:

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

Ответ 2

Вы можете установить его по умолчанию (как он сделал во втором примере) или создать свой собственный "пользовательский" (который он, вероятно, сделает с этого момента).

Вероятно, автор узнает больше/лучше, как только вы узнаете немного (создание макетов и т.д.).