Разделы презентаций


Модель приложения

Содержание

ЦельПрименить модель при разработке приложенийНаучиться использовать движок Razor в шаблонах страниц

Слайды и текст этой презентации

Слайд 1Модель приложения
ASP.NET MVC 4.0
2013

Модель приложенияASP.NET MVC 4.02013

Слайд 2Цель
Применить модель при разработке приложений
Научиться использовать движок Razor в шаблонах

страниц

ЦельПрименить модель при разработке приложенийНаучиться использовать движок Razor в шаблонах страниц

Слайд 3Траектория запроса


Метод контроллера


Модель

Шаблон представления

GET, POST
HTML

Модель – система классов (описание предметной

области).
Запрос к модели – вызов метода одного из классов модели.
Модель

представления – данные, которые нужно показать

Данные, которые нужно
показать

Выводим не "Hello" а погоду.

Запрос к модели

Траектория запросаМетод контроллераМодельШаблон представленияGET, POSTHTMLМодель – система классов (описание предметной области).Запрос к модели – вызов метода одного

Слайд 4Задача: Сделать чат
Макет страницы
Протокол чата
Новое сообщение
Подпись
Кнопка

Задача: Сделать чатМакет страницыПротокол чатаНовое сообщениеПодписьКнопка

Слайд 5Состав приложения

Состав приложения

Слайд 6Модель: классы ChatItem и Chat
public class ChatItem

{
public string Message { set; get;

}
public string Author { set; get; }
public DateTime Time { set; get; }
}

public static class Chat
{
public static List list = new List();


static object _objLock = new Object();

public static void AddItem(ChatItem item)
{
if (string.IsNullOrWhiteSpace(item.Author))
item.Author = "Anonimus";
item.Time = DateTime.Now;

lock (_objLock)
{
list.Add(item);
}
}
}

Модель: классы ChatItem и Chat  public class ChatItem  {    public string Message

Слайд 7Модель представления
public class VModel
{

public List All { set; get; }

public string Message { set; get; }
public string Author { set; get; }
}

Модель представления должна близко соответствовать структуре представления.

Модель представления  public class VModel  {    public List All { set; get;

Слайд 8Контроллер
public class HomeController : Controller
{


[HttpGet]

public ActionResult Index()
{
// Показать страницу
VModel vm = new VModel { All = Chat.list, Author = "" };
return View(vm);
}

[HttpPost]
public ActionResult Index(ChatItem item)
{
// Добавить сообщение в протокол
if (ModelState.IsValid)
Chat.AddItem(item);

// Показать страницу
VModel vm = new VModel { All = Chat.list, Author = item.Author };
return View(vm);
}
}

У контроллера две задачи:
1) по команде GET показать первоначальный вид страницы;
2) по команде POST добавить сообщение в протокол и снова показать страницу.

Контроллер  public class HomeController : Controller  {      [HttpGet]

Слайд 9Типизированное представление
@model ChatMVC.Models.VModel
@{
ViewBag.Title = "Index";
}
Index
Шаблон типизированного представления строится

с учетом
типа модели представления.
Состав типа определяется при помощи отражения.

Если

выбрать опцию Empty никакого специального кода построено не будет.







Типизация представления выразится только в появлении в шаблоне свойства Model.





Типизированное представление@model ChatMVC.Models.VModel@{  ViewBag.Title =

Слайд 10Шаблон представления
@model ChatMVC.Models.VModel

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

Chat MVC

@foreach (var item in Model.All)
{


@item.Author: @item.Message


@item.Time

}



@Html.ValidationSummary()
Сообщение:




Подпись: value="@Model.Author"/>



Директива @model позволяет получать подсказки во время разработки. Во время выполнения она роли не играет.

Шаблон представления@model ChatMVC.Models.VModel@{  Layout =

Слайд 11Проверка ввода
Пользователь вводит данные в веб-форму, затем они попадают в

контроллер, контроллер пересылает их в модель.







Ввод пользователя можно проверять в

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

Только модель владеет информацией, необходимой для полной проверки данных.
Проверка вводаПользователь вводит данные в веб-форму, затем они попадают в контроллер, контроллер пересылает их в модель.Ввод пользователя

Слайд 12Проверка в модели, интерфейс IValidatableObject
При помощи интерфейса IValidatableObject MVC фреймворк

собирает сведения об ошибках в коллекцию ModelState.
Объект ModelState потом

будет доступен в контроллере и в представлении.
Проверка в модели,  интерфейс IValidatableObjectПри помощи интерфейса IValidatableObject MVC фреймворк собирает сведения об ошибках в коллекцию

Слайд 13Мероприятия в контроллере и в представлении
В контроллере:
В представлении:

Мероприятия в контроллере  и в представленииВ контроллере:В представлении:

Слайд 14Bundling & 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")




=

+

Метод RegisterBundles() вызывается на старте приложения.
В строке "~/css" – имя упаковки. Имя должно иметь вид виртуального пути в приложении.
В web.config должна быть указана версия целевого фреймвормка – 4.5

Bundling & Minification  public class BundleConfig  {    public static void RegisterBundles(BundleCollection bundles)

Слайд 15Программный код в шаблонах представления
Начиная с ASP в 1996 г.,

код шаблонов страниц представлял собой смесь из HTML-разметки и кода

на языке программирования – VB или C#.
Программный код в шаблонах представленияНачиная с ASP в 1996 г., код шаблонов страниц представлял собой смесь из

Слайд 16Движок Razor
http://habrahabr.ru/post/98241/ - перевод статьи с блога Скотта Гаттри

Движок Razorhttp://habrahabr.ru/post/98241/ - перевод статьи с блога Скотта Гаттри

Слайд 17
Границы разметки и кода
Где начинается код?
Когда парсер

встречает знак @, он проверяет, может ли то, что следует

за ним, рассматриваться как код.

Где начинается разметка?
Начало определяется по наличию тэга <>. В движке есть специальный тэг , единственная задача которого обозначить разметку. В отличие от обычных тэгов тэг не будет показан на странице.


Основная особенность Razor в том, что для разделения языков предлагаются не две скобки, а одна.

Границы разметки и кодаГде начинается код?   Когда парсер встречает знак @, он проверяет, может ли

Слайд 18Сложные выражения
Круглые скобки @( ) позволяют выводить значения выражений.

Сложные выраженияКруглые скобки @( ) позволяют выводить значения выражений.

Слайд 19Многострочные выражения
В блок @{ } можно вставить несколько строчек

кода

Многострочные выражения В блок @{ } можно вставить несколько строчек кода

Слайд 20Блоки @if и @foreach
Переменная может быть видна в несколько серверных

блоках кода.

Блоки @if и @foreachПеременная может быть видна в несколько серверных блоках кода.

Слайд 21Интеграция содержимого и кода
Этот код, выведет следующий HTML:
Email-адрес выведется, как

статическое содержимое, а @DateTime.Now определится, как код

Чтобы показать символ '@',

пишут @@, но это нужно не всегда.
Интеграция содержимого и кодаЭтот код, выведет следующий HTML:Email-адрес выведется, как статическое содержимое, а @DateTime.Now определится, как кодЧтобы

Слайд 22Обертывание в тэги
Вывод:

Обертывание в тэгиВывод:

Слайд 23Кодирование HTML
По умолчанию содержимое, выводимое в блоках @, автоматически кодировано

в HTML.
Кодирование необходимо для защиты против XSS-атак (англ. Сross

Site Sсriрting — «межсайтовый скриптинг»).


Если нужен не испорченный HTML, применяйте HtmlString




@( "

привет

" + "с Марса")


@( new HtmlString("

привет

" + "с Марса") )

Кодирование HTMLПо умолчанию содержимое, выводимое в блоках @, автоматически кодировано в HTML. Кодирование необходимо для защиты против

Слайд 24Самостоятельно
Запрограммировать игру в города – когда следующий город начинается на

последнюю букву предыдущего.

Некорректные города не принимаются. Корректным считается город,

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

Все уже названные города должны быть показаны на странице в виде маркированного списка
    .

СамостоятельноЗапрограммировать игру в города – когда следующий город начинается на последнюю букву предыдущего. Некорректные города не принимаются.

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика