Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_ASP.NET MVC / 6 Модель проиложения.ppt
Скачиваний:
48
Добавлен:
14.04.2015
Размер:
671.74 Кб
Скачать

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

ASP.NET MVC 4.0

2013

Цель

Применить модель при разработке приложений

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

2

Траектория запроса

 

Метод

Запрос к

Модель

GET, POST

контроллера

модели

 

 

 

 

 

 

 

 

 

Данные,

 

 

 

 

которые

 

 

 

 

нужно

 

Выводим не

 

 

показать

 

 

 

 

 

"Hello" а

 

 

Шаблон

 

 

погоду.

HTML

представлен

 

 

ия

 

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

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

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

Подпи

сь

Задача: Сделать чат

Макет страницы

Проток ол чата

Новое

сообщен

ие

Кноп

ка

4

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

5

Модель: классы 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<ChatItem> list = new List<ChatItem>();

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);

}

}

}

6

Модель представления

public class VModel

{

public List<ChatItem> All { set;

get; }

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

}

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

7

Контроллер

Уконтроллера две задачи:

1)по команде GET показать первоначальный вид страницы;

2)по команде POST добавить сообщение в протокол и снова показать страницу.

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);

}

}

8

Типизированное

представление

Шаблон типизированного представления строится с учетом типа модели представления.

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

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

@model ChatMVC.Models.VModel @{

ViewBag.Title = "Index";

}

<h2>Index</h2>

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

9

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

@model ChatMVC.Models.VModel

@{

Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>Chat MVC</h2> <div id="chat">

@foreach (var item in Model.All)

{

<section class='message'>

<span class='author'>@item.Author: </span> @item.Message

<br />

<span class='time'>@item.Time</span> </section>

}

</div>

<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/> </form>

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

10