24
Введение в ASP.NET MVC ASP.NET MVC 4.0 2014

Введение в ASP . NET MVC

Embed Size (px)

DESCRIPTION

Введение в ASP . NET MVC. ASP . NET MVC 4.0 201 4. История ASP . NET. 1996 – ASP – Active Server Pages , построение страниц на сервере на основе шаблонов. Шаблоны сочетали код на VB c HTML- разметкой. - PowerPoint PPT Presentation

Citation preview

Page 1: Введение в  ASP . NET MVC

Введение в ASP.NET MVC

ASP.NET MVC 4.02014

Page 2: Введение в  ASP . NET MVC

2

История ASP.NET• 1996 – ASP – Active Server Pages, построение

страниц на сервере на основе шаблонов. Шаблоны сочетали код на VB c HTML-разметкой.

• 2001 – ASP.NET – Составная часть новой платформы .NET. Технология WebForms по аналогии с WinForms.

• 2009 – ASP.NET MVC. Аналогична уже существующим на рынке подходам: Java Spring 2002, Python Jango 2003 и др.

• 2013 – ASP.NET MVC 5.0 – октябрь, последняя версия

ASP.NET

WebForms

ASP.NET

WebForms MVC

ASP

Page 3: Введение в  ASP . NET MVC

3

Фреймворки на базе ASP.NET

ASP.NET – бесплатный фреймворк для построения больших веб-приложений с использованием HTML, CSS и JavaScript. 

WebForms – технология построение веб-приложений из стандартных управляющих элементов и обработчиков событий.

ASP.NET MVC – построение веб-приложений на базе шаблона MVC с разделением ответственности и полным контролем над HTML кодом страниц.

Web Pages – быстрая разработка веб-сайтов согласно современным веб-стандартам.

Page 4: Введение в  ASP . NET MVC

4

План

1. Введение в ASP.NET MVC2. Движок Razor3. Модели4. Доступ к данным 5. Контроллеры6. Представления7. Валидация ввода пользователя8. Аутентификация и авторизация9. Модульное тестирование 10. jQuery11. AJAX

Page 5: Введение в  ASP . NET MVC

5

Литература по ASP.NET MVC

Jon Galloway, Phil Haack, Brad Wilson, K. Scott Allen PROFESSIONAL ASP.NET MVC 3 (здесь перевод на русский)

Стивен Сандерсон ASP.NET MVC Framework с примерами на C# для профессионалов

Jeffrey Palermo, Jimmy Bogard, Eric Hexter, Matthew Hinze, and Jeremy Skinner ASP.NET MVC 4 in Action (есть на русском)

Page 6: Введение в  ASP . NET MVC

6

Цель занятия

• Познакомиться с архитектурой WEB приложения.

• Вспомнить шаблон MVC. • Написать приложение Hello ASP.NET MVC!

Page 7: Введение в  ASP . NET MVC

WEB-приложение на платформе ASP.NET

7

WEB serverWEB clientGET, POST

HTML

ASP.NET

WEB applicationWEB application – виртуальный каталог на сервере. Поэтому путь к ресурсу не обязан быть путем в файловой системе.

Page 8: Введение в  ASP . NET MVC

Протокол HTTP

HTTP — протокол прикладного уровня, аналогичными ему являются FTP и SMTP. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего состояния.

Клиент

WEB сервер

КлиентДокумент

Тим Бернерс-Ли, изобретатель URI, URL, HTTP, HTML и Web

GET, POST

GET, POST

Page 9: Введение в  ASP . NET MVC

9

URL

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>

ПРИМЕРЫ:

http://translate.google.com.ua/?hl=ru&tab=wT#en/ru/table

https://www.google.com.ua/maps/@49.9916541,36.2804766,11z

Page 10: Введение в  ASP . NET MVC

10

Команды GET и POST

Обе команды требуют ответа от сервера.

GET – команда получения информации. Ответ кешируется браузером.

POST – команда отправки информации. Ответ не кешируется браузером.

Команда GET не должна вызывать никаких изменений на серверной стороне.

Page 11: Введение в  ASP . NET MVC

Примеры запроса и ответа

GET /simple.html HTTP/1.1Accept: */*Accept-Language: en-usAccept-Encoding: gzip, deflateIf-Modified-Since: Wed, 24 Oct 2011 14:12:36 GMTUser-Agent: Mozilla/4.0.(compatible; MSIE.6.0; Windows NT 5.1)Host: www.wintellect.comConnection: Keep-Alive[blank line]

http://www.wintellect.com/simple.html

HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Date: Wed, 24 Oct 2011 14:12:37 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Wed, 24 Oct 2001 14:00:53 GMTContent-Length: 46

<html> <body> Hello, world </body></html>

Увидеть заголовки можно в окне разработчика браузера Chrome [F12 – F5 – Network – Headers].

Page 12: Введение в  ASP . NET MVC

12

Шаблон MVC

Концепция MVC была описана в 1979 г. Трюгве Реенскаугом, тогда работающим над языком программирования Smalltalk в Xerox PARC.

Пассивная модель — модель не имеет никаких способов воздействовать на представление или контроллер, и используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются контроллером и он же отвечает за перерисовку представления, если это необходимо.

Активная модель — модель оповещает представление о том, что в ней произошли изменения, а представления, которые заинтересованы в оповещении, подписываются на эти сообщения. Это позволяет сохранить независимость модели как от контроллера, так и от представления.

Классической реализацией концепции MVC принято считать версию именно с активной моделью.

Page 13: Введение в  ASP . NET MVC

13

Шаблон MVC для Web

MODEL – классы, которые представляют данные приложения и бизнес-правила, которым должны удовлетворять эти данные.

VIEW – файлы шаблонов, по которым генерируется динамический HTML-ответ.

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

Page 14: Введение в  ASP . NET MVC

14

Приложение Hello MVC!

1. Создать проект ASP.NET MVC 4, вид проекта – пустой (Empty).

2. Добавить HomeController, который передаст в представление слова "Hello MVC!"

3. Создать представление, которое получит от контроллера слова "Hello MVC!" и покажет их на странице.

Page 15: Введение в  ASP . NET MVC

15

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

МаршрутизаторЗапрос Метод контроллера

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

"Hello MVC!"

Page 16: Введение в  ASP . NET MVC

16

Маршрутизатор <схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>

Маршрутизатор в ASP.NET может сопоставить URL‐путь не только с файлом на сервере, но и с действиями.

В ASP.NET MVC URL‐путь интерпретируется как вызов метода контроллера.

Интерпретация происходит на основе шаблонов. Шаблон маршрута содержит текст «как есть» и параметры, заключенные в фигурные скобки. Текст и заполнители располагаются в сегментах URL-пути, разделенных косыми чертами ("/").

"{controller}/{action}/{id}"

После разбора запроса составляется словарь – список пар (параметр=значение).

Так URL-путь "Home/Index/25" будет разобран в словарь:

controller=Home, action=Index, id=25,

что позволит фреймворку вызвать метод Index(id=25) класса контроллера Home.

Page 17: Введение в  ASP . NET MVC

17

Коррекция маршрутизатора

namespace MvcApplication4{ public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }}

В файле ~/App_Start/RouteConfig.cs корректируется таблица маршрутов.

Эта коррекция означает, что запрос "хост/приложение/С/M/" вызовет метод M класса C, а запрос " хост/приложение/" вызовет метод Index класса Home.

Page 18: Введение в  ASP . NET MVC

18

Контроллер public class HomeController : Controller { public ActionResult Index() {

ViewBag.Info = "Hello MVC!"; return View(); } }

В файле ~/Controllers/HomeController.cs находится класс контроллера.

Открытые методы контроллера вызываются по http-запросу.

Возвращаемое значение метода ссылается на шаблон представления. По умолчанию дается ссылка на представление, одноименное с методом.

Данные, которые нужно показать, закладываются в динамический объект ViewBag.

Page 19: Введение в  ASP . NET MVC

19

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

<h2>@ViewBag.Info</h2>

В файле ~/Views/Home/Index.cshtml находится шаблон представления (Home – класс контроллера, Index – метод контроллера).

Данные, которые передал контроллер, извлекаются из динамического объекта ViewBag.

Данные вставляются в шаблон страницы с использованием нотации Razor.

Page 20: Введение в  ASP . NET MVC

20

Page 21: Введение в  ASP . NET MVC

Реализовать диалогСервер: Назовите свое имя.Клиент: Вася.Сервер: Привет, Вася.

21

Назовите свое имя.

Вася

Привет, Вася.

Готово

Вид веб-формы

текст

поле ввода

кнопка

текст

Page 22: Введение в  ASP . NET MVC

Реализация диалога

22

Одна страница вызывается дважды – первый раз из адресной строки браузера по команде GET, – второй раз по нажатию кнопки, команда POST.

Запрос POST передает на сервер данные формы (содержимое поля ввода).

Методы контроллера нужно промаркировать атрибутом HttpGet или HttpPost.

GET [HttpGet]Home.Init

ПредставлениеОтвет

POST [HttpPost]Home.Init

http://host/Home/Index

Форма

Page 23: Введение в  ASP . NET MVC

23

Извлечение параметров запросаКоманды GET и POST могут иметь именованные параметры. Параметры команд должны быть переданы в соответствующие методы контроллера.

Есть два способа это сделать:1) объявить одноименные параметры в соответствующем методе контроллера;

public ActionResult Index(string username = "") { ViewBag.UserName = username; return View(); }

public ActionResult Index(){ ViewBag.UserName = this.RouteData.Values["username"]; return View();}

2) воспользоваться объектом RouteData, который содержит данные запроса в виде словаря.

Page 24: Введение в  ASP . NET MVC

24

Самостоятельно

Сделать приложение, в котором пользователь может задать один из вопросов, «Который час?» или «Какой сегодня день недели?» и получить ответ от сервера.