Литмир - Электронная Библиотека
A
A

    @Html.DisplayFor(model => model.PetName)

  </dd>

</dl>

Вспомогательная функция HTML под названием

DisplayNameFor()
отображает имя свойства, если только свойство не декорировано или атрибутом
Display(Name="")
, или атрибутом
DisplayName("")
, и тогда применяется отображаемое значение. Метод
DisplayFor()
отображает значение для свойства модели, указанное в выражении. Обратите внимание, что для получения названия производителя используется навигационное свойство
MakeNavigation
.

Запустив приложение и перейдя на страницу

RazorSyntax
, вы можете быть удивлены тем, что шаблон отображения
Car
не применяется. Причина в том, что шаблон находится в каталоге представления
Cars
, а метод действия
RazorSyntax
и представление вызываются из
HomeController
. Методы действий в
HomeController
будут осуществлять поиск представлений в каталогах
Home
и
Shared
 и потому не найдут шаблон отображения
Car
.

Если вы переместите файл

Car.cshtml
в каталог
Shared\DisplayTemplates
, тогда представление
RazorSyntax
будет использовать шаблон отображения
Car
.

Шаблон отображения CarWithColor

Шаблон

CarWithColor
похож на шаблон
Car
. Разница в том, что этот шаблон изменяет цвет текста Color (Цвет) на основе значения свойства
Color
модели. Добавьте в каталог
Cars\DisplayTemplates
новый шаблон по имени
CarWithColors.cshtml
и приведите разметку к следующему виду:

@model Car

<hr />

<div>

  <dl class="row">

    <dt class="col-sm-2">

      @Html.DisplayNameFor(model => model.PetName)

    </dt>

    <dd class="col-sm-10">

      @Html.DisplayFor(model => model.PetName)

    </dd>

    <dt class="col-sm-2">

      @Html.DisplayNameFor(model => model.MakeNavigation)

    </dt>

    <dd class="col-sm-10">

      @Html.DisplayFor(model => model.MakeNavigation.Name)

    </dd>

    <dt class="col-sm-2">

      @Html.DisplayNameFor(model => model.Color)

    </dt>

    <dd class="col-sm-10" style="color:@Model.Color">

      @Html.DisplayFor(model => model.Color)

    </dd>

  </dl>

</div>

Чтобы применить шаблон

CarWithColors.cshtml
вместо
Car.cshtml
, вызовите
DisplayForModel()
с именем шаблона (обратите внимание, что правила местоположения по-прежнему актуальны):

@Html.DisplayForModel(<b>&quot;CarWithColors&quot;</b>)

Каталог EditorTemplates

Каталог

EditorTemplates
работает аналогично каталогу
DisplayTemplates
, но находящиеся в нем шаблоны используются для редактирования.

Шаблон редактирования Car

Создайте внутри каталога

Views\Cars
новый каталог под названием
EditorTemplates
и добавьте в него новое представление по имени
Car.cshtml
. Удалите сгенерированный код вместе с комментариями и замените его показанным ниже кодом, который является разметкой для редактирования сущности
Car
:

@model Car

&lt;div asp-validation-summary=&quot;All&quot; class=&quot;text-danger&quot;&gt;&lt;/div&gt;

&lt;div class=&quot;form-group&quot;&gt;

    &lt;label asp-for=&quot;PetName&quot; class=&quot;col-form-label&quot;&gt;&lt;/label&gt;

  &lt;input asp-for=&quot;PetName&quot; class=&quot;form-control&quot; /&gt;

    &lt;span asp-validation-for=&quot;PetName&quot; class=&quot;text-danger&quot;&gt;&lt;/span&gt;

&lt;/div&gt;

&lt;div class=&quot;form-group&quot;&gt;

    &lt;label asp-for=&quot;MakeId&quot; class=&quot;col-form-label&quot;&gt;&lt;/label&gt;

    &lt;select asp-for=&quot;MakeId&quot; class=&quot;form-control&quot; asp-items=&quot;ViewBag.MakeId&quot;&gt;

    &lt;/select&gt;

&lt;/div&gt;

&lt;div class=&quot;form-group&quot;&gt;

    &lt;label asp-for=&quot;Color&quot; class=&quot;col-form-label&quot;&gt;&lt;/label&gt;

    &lt;input asp-for=&quot;Color&quot; class=&quot;form-control&quot;/&gt;

613
{"b":"847442","o":1}