Книги онлайн и без регистрации » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 391 392 393 394 395 396 397 398 399 ... 407
Перейти на страницу:
представление Create будет неоднократно обновляться.

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

Вспомогательная функция дескриптора для действия формы используется в элементах кнопок и изображений с целью изменения действия содержащей их формы. Например, следующая кнопка, добавленная к форме редактирования, вызовет передачу запроса POST конечной точке Create:

<button type="submit" asp-action="Create">Index</button>

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

Вспомогательная функция дескриптора для якоря (<а>) заменяет вспомогательную функцию HTML с именем Html.ActionLink(). Скажем, чтобы создать ссылку на представление RazorSyntax, применяйте такой код:

<a class="nav-link text-dark" asp-area="" asp-controller="Home"

    asp-action="RazorSyntax">

  Razor Syntax

</a>

Для добавления страницы синтаксиса Razor в меню модифицируйте _Menu.cshtml, как показано ниже, добавив новый элемент меню между элементами Home (Домой) и Privacy (Секретность) (дескрипторы <li>, окружающие дескрипторы якорей, предназначены для меню Bootstrap):

...

<li class="nav-item">

  <a class="nav-link text-dark" asp-area="" asp-controller="Home"

      asp-action="Index">Home</a>

</li>

<li class="nav-item">

   <a class="nav-link text-dark" asp-area="" asp-controller="Home"

asp-action="RazorSyntax">Razor Syntax</a>

</li>

<li class="nav-item">

   <a class="nav-link text-dark" asp-area="" asp-controller="Home" 

asp-action="Privacy">Privacy</a>

</li>

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

Вспомогательная функция дескриптора для элемента ввода (<input>) является одной из наиболее универсальных. В дополнение к автоматической генерации атрибутов id и name стандарта HTML, а также любых атрибутов data-val стандарта HTML5, вспомогательная функция дескриптора строит надлежащую HTML-разметку, основываясь на типе данных целевого свойства. В табл. 31.3 перечислены типы HTML, которые создаются на базе типов .NET Core свойств.

Кроме того, вспомогательная функция дескриптора для элемента ввода добавит атрибуты type из HTML5, основываясь на аннотациях данных. В табл. 31.4 перечислены некоторые распространенные аннотации и генерируемые атрибуты type из HTML5.

Шаблон редактирования Car.cshtml содержит дескрипторы <input> для свойств PetName и Color. В качестве напоминания ниже приведены только эти дескрипторы:

<input asp-for="PetName" class="form-control" />

<input asp-for="Color" class="form-control"/>

Вспомогательная функция дескриптора для элемента ввода добавляет к визуализируемому дескриптору атрибуты name и id, существующее значение для свойства (если оно есть) и атрибуты проверки достоверности HTML5. Оба поля являются обязательными и имеют ограничение на длину строки в 50 символов. Вот визуализированная разметка для указанных двух свойств:

<input class="form-control" type="text" data-val="true"

    data-val-length="The field Pet Name must be a string with a

maximum length of 50." data-val-length-max="50"

   data-val-required="The Pet Name field is required."

   id="PetName" maxlength="50" name="PetName" value="Zippy">

<input class="form-control valid" type="text" data-val="true"

   data-val-length="The field Color must be a string with a

maximum length of 50." data-val-length-max="50"

   data-val-required="The Color field is required."

   id="Color" maxlength="50" name="Color" value="Black"

   aria-describedby="Color-error" aria-invalid="false">

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

Вспомогательная функция дескриптора для текстовой области (<textarea>) автоматически добавляет атрибуты id и name и любые атрибуты проверки достоверности HTML5, определенные для свойства. Например, следующая строка создает дескриптор <textarea> для свойства Description:

<textarea asp-for="Description"></textarea>

Вспомогательная функция дескриптора для элемента выбора

 Вспомогательная функция дескриптора для элемента выбора (<select>) создает дескрипторы ввода с выбором из свойства модели и коллекции. Как и в других вспомогательных функциях дескрипторов для элементов ввода, к разметке автоматически добавляются атрибуты id и name, а также любые атрибуты data-val из HTML5. Если значение свойства модели совпадает с одним из значений в списке, тогда для этого варианта в разметку добавляется атрибут selected.

Например, пусть имеется модель со свойством по имени Country и список SelectList по имени Countries с таким определением:

public List<SelectListItem> Countries { get; } = new List<SelectListItem>

{

  new SelectListItem { Value = "MX", Text = "Mexico" },

  new SelectListItem { Value = "CA", Text = "Canada" },

  new SelectListItem { Value = "US", Text = "USA"  },

};

Следующая разметка будет визуализировать дескриптор <select> с надлежащими дескрипторами <option>:

<select asp-for="Country" asp-items="Model.Countries"></select>

Если значением свойства Country является CA, тогда в представление будет выведена показанная ниже разметка:

<select id="Country" name="Country">

  <option value="MX">Mexico</option>

  <option selected="selected" value="CA">Canada</option>

  <option value="US">USA</option>

</select>

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

Вспомогательные функции дескрипторов для сообщения проверки достоверности и для сводки по проверке достоверности в точности отражают вспомогательные функции HTML с именами Html.ValidationMessageFor() и Html.ValidationSummaryFor(). Первая применяется к HTML-дескриптору <span> для отдельного свойства модели, а вторая — к HTML-дескриптору <div> для целой модели. Сводка по проверке достоверности поддерживает варианты Аll (все ошибки), ModelOnly (ошибки только модели, но не свойств модели) и None (никаких ошибок).

Вспомните вспомогательные функции дескрипторов для проверки достоверности из EditorTemplate в файле Car.cshtml (выделены полужирным):

<div asp-validation-summary="All" class="text-danger"></div>

<div class="form-group">

  <label asp-for="PetName" class="col-form-label"></label>

  <input asp-for="PetName" class="form-control" />

  <span asp-validation-for="PetName" class="text-danger"></span>

</div>

<div class="form-group">

  <label asp-for="MakeId" class="col-form-label"></label>

  <select asp-for="MakeId" class="form-control" asp-items="ViewBag.MakeId"></select>

</div>

<div class="form-group">

  <label asp-for="Color" class="col-form-label"></label>

  <input asp-for="Color" class="form-control"/>

  <span asp-validation-for="Color" class="text-danger"></span>

</div>

Эти вспомогательные функции дескрипторов будут отображать ошибки модели, возникшие во время привязки и проверки достоверности, как показано на рис. 31.3.

Вспомогательная функция дескриптора для среды

Вспомогательная функция дескриптора для среды (<environment>) обычно используется для условной загрузки файлов JavaScript и CSS (или подходящей разметки) на основе среды, в которой запущен сайт. Откройте частичное представление _Head.cshtml и модифицируйте разметку следующим образом:

<meta charset="utf-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<title>@ViewData["Title"] - AutoLot.Mvc</title>

<environment include="Development">

  <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />

</environment>

<environment exclude="Development">

  <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />

</environment>

<link rel="stylesheet" href="~/css/site.css" />

1 ... 391 392 393 394 395 396 397 398 399 ... 407
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. В коментария нецензурная лексика и оскорбления ЗАПРЕЩЕНЫ! Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?