- •Модель приложения
- •Цель
- •Траектория запроса
- •Подпи
- •Состав приложения
- •Модель: классы ChatItem и
- •Модель представления
- •Контроллер
- •Типизированное
- •Шаблон представления
- •Проверка ввода
- •интерфейс IValidatableObject
- •контроллере
- •Bundling & Minification
- •Программный код в шаблонах представления
- •Движок Razor
- •Границы разметки и кода
- •Сложные выражения
- •Многострочные
- •Блоки @if и @foreach
- •Интеграция содержимого и кода
- •Обертывание в тэги
- •Кодирование HTML
- •Самостоятельно
Проверка ввода
Пользователь вводит данные в веб-форму, затем они попадают в контроллер, контроллер пересылает их в модель.
Браузер |
|
Контроллер |
|
Модель |
|
|
|
|
|
Ввод пользователя можно проверять в трех местах: 1)в браузере перед отсылкой формы, 2)в контроллере перед передачей в модель,
3)в модели перед тем как изменить состояние модели.
Только модель владеет информацией, необходимой для полной проверки данных.
11
интерфейс IValidatableObject
При помощи интерфейса IValidatableObject MVC фреймворк собирает сведения об ошибках в коллекцию ModelState.
Объект ModelState потом будет доступен в контроллере и в представлении.
12
контроллере
Ви в представлении
контроллере:
В
представлени<form method="post" action="/Home/Index"> и: @Html.ValidationSummary()
Сообщение:<br/>
<textarea id="message" name="message" ></textarea> <br/>
Подпись: <input type="text" id="author" name="author" value="@Model.Author"/>
<input type="submit" value="Submit"/>
<br/> 13 </form>
Bundling & Minification
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/css").Include("~/Content/site.css"));
bundles.Add(new ScriptBundle("~/js").Include("~/Scripts/site.js"));
} |
} |
+ |
|
||
|
|
@Styles.Render("~/css") @Scripts.Render("~/js") =
<script src="/Scripts/site.js"></script> <link href="/Content/site.css" rel="stylesheet"/>
Метод RegisterBundles() вызывается на старте приложения.
Встроке "~/css" – имя упаковки. Имя должно иметь вид виртуального пути в приложении.
Вweb.config должна быть указана версия целевого фреймвормка – 4.5
<compilation debug="false" targetFramework="4.5" />
14
Программный код в шаблонах представления
Начиная с ASP в 1996 г., код шаблонов страниц представлял собой смесь из HTML-разметки и кода на языке программирования – VB или C#.
15
Движок Razor
http://habrahabr.ru/post/98241/ - перевод статьи с блога Скотта Гаттри
Границы разметки и кода
Основная особенность Razor в том, что для разделения языков предлагаются не две скобки, а одна.
Где начинается код?
Когда парсер встречает знак @, он проверяет, может ли то, что следует за ним, рассматриваться как код.
Где начинается разметка?
Начало определяется по наличию тэга <>. В движке есть специальный тэг <text>… </text>, единственная задача которого обозначить разметку. В отличие от обычных тэгов тэг <text> не будет показан на странице.
17
Сложные выражения
•Круглые скобки @( ) позволяют выводить значения выражений.
18
Многострочные
выражения
В блок @{ } можно вставить несколько строчек кода
19
Блоки @if и @foreach
Переменная может быть видна в несколько серверных блоках кода.
20