'

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

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

История 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 – октябрь, последняя версия 2 ASP.NET WebForms ASP.NET WebForms MVC ASP


Слайд 2

Фреймворки на базе ASP.NET 3 ASP.NET – бесплатный фреймворк для построения больших веб-приложений с использованием HTML, CSS и JavaScript.  WebForms – технология построение веб-приложений из стандартных управляющих элементов и обработчиков событий. ASP.NET MVC – построение веб-приложений на базе шаблона MVC с разделением ответственности и полным контролем над HTML кодом страниц. Web Pages – быстрая разработка веб-сайтов согласно современным веб-стандартам.


Слайд 3

План Введение в ASP.NET MVC Движок Razor Модели Доступ к данным Контроллеры Представления Валидация ввода пользователя Аутентификация и авторизация Модульное тестирование jQuery AJAX 4


Слайд 4

Литература по ASP.NET MVC 5 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 (есть на русском)


Слайд 5

Цель занятия Познакомиться с архитектурой WEB приложения. Вспомнить шаблон MVC. Написать приложение Hello ASP.NET MVC! 6


Слайд 6

WEB-приложение на платформе ASP.NET 7 WEB server WEB client GET, POST HTML ASP.NET WEB application WEB application – виртуальный каталог на сервере. Поэтому путь к ресурсу не обязан быть путем в файловой системе.


Слайд 7

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


Слайд 8

URL 9 <схема>://<логин>:<пароль>@<хост>:<порт>/<URL?путь>?<параметры>#<якорь> ПРИМЕРЫ: http://translate.google.com.ua/?hl=ru&tab=wT#en/ru/table https://www.google.com.ua/maps/@49.9916541,36.2804766,11z


Слайд 9

Команды GET и POST 10 Обе команды требуют ответа от сервера. GET – команда получения информации. Ответ кешируется браузером. POST – команда отправки информации. Ответ не кешируется браузером. Команда GET не должна вызывать никаких изменений на серверной стороне.


Слайд 10

Примеры запроса и ответа GET /simple.html HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate If-Modified-Since: Wed, 24 Oct 2011 14:12:36 GMT User-Agent: Mozilla/4.0.(compatible; MSIE.6.0; Windows NT 5.1) Host: www.wintellect.com Connection: Keep-Alive [blank line] http://www.wintellect.com/simple.html HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Wed, 24 Oct 2011 14:12:37 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Wed, 24 Oct 2001 14:00:53 GMT Content-Length: 46 <html> <body> Hello, world </body> </html> Увидеть заголовки можно в окне разработчика браузера Chrome [F12 – F5 – Network – Headers].


Слайд 11

Шаблон MVC 12 Концепция MVC была описана в 1979 г. Трюгве Реенскаугом, тогда работающим над языком программирования Smalltalk в Xerox PARC.  Пассивная модель — модель не имеет никаких способов воздействовать на представление или контроллер, и используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются контроллером и он же отвечает за перерисовку представления, если это необходимо. Активная модель — модель оповещает представление о том, что в ней произошли изменения, а представления, которые заинтересованы в оповещении, подписываются на эти сообщения. Это позволяет сохранить независимость модели как от контроллера, так и от представления. Классической реализацией концепции MVC принято считать версию именно с активной моделью.


Слайд 12

Шаблон MVC для Web MODEL – классы, которые представляют данные приложения и бизнес-правила, которым должны удовлетворять эти данные. VIEW – файлы шаблонов, по которым генерируется динамический HTML-ответ. CONTROLLER – классы, которые обрабатывают запросы пользователя, получают данные от модели и выбирают представление для формирования ответа пользователю. 13


Слайд 13

Приложение Hello MVC! Создать проект ASP.NET MVC 4, вид проекта – пустой (Empty). Добавить HomeController, который передаст в представление слова "Hello MVC!" Создать представление, которое получит от контроллера слова "Hello MVC!" и покажет их на странице. 14


Слайд 14

Траектория запроса 15 Маршрутизатор Запрос Метод контроллера Шаблон представления Ответ "Hello MVC!"


Слайд 15

Маршрутизатор 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.


Слайд 16

Коррекция маршрутизатора 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.


Слайд 17

Контроллер 18 public class HomeController : Controller { public ActionResult Index() { ViewBag.Info = "Hello MVC!"; return View(); } } В файле ~/Controllers/HomeController.cs находится класс контроллера. Открытые методы контроллера вызываются по http-запросу. Возвращаемое значение метода ссылается на шаблон представления. По умолчанию дается ссылка на представление, одноименное с методом. Данные, которые нужно показать, закладываются в динамический объект ViewBag.


Слайд 18

Представление 19 <h2>@ViewBag.Info</h2> В файле ~/Views/Home/Index.cshtml находится шаблон представления (Home – класс контроллера, Index – метод контроллера). Данные, которые передал контроллер, извлекаются из динамического объекта ViewBag. Данные вставляются в шаблон страницы с использованием нотации Razor.


Слайд 19

20


Слайд 20

Реализовать диалог Сервер: Назовите свое имя. Клиент: Вася. Сервер: Привет, Вася. 21 Назовите свое имя. Вася Привет, Вася. Готово Вид веб-формы текст поле ввода кнопка текст


Слайд 21

Реализация диалога 22 Одна страница вызывается дважды – первый раз из адресной строки браузера по команде GET, – второй раз по нажатию кнопки, команда POST. Запрос POST передает на сервер данные формы (содержимое поля ввода). Методы контроллера нужно промаркировать атрибутом HttpGet или HttpPost. Форма


Слайд 22

Извлечение параметров запроса 23 Команды GET и POST могут иметь именованные параметры. Параметры команд должны быть переданы в соответствующие методы контроллера. Есть два способа это сделать: объявить одноименные параметры в соответствующем методе контроллера; public ActionResult Index(string username = "") { ViewBag.UserName = username; return View(); } public ActionResult Index() { ViewBag.UserName = this.RouteData.Values["username"]; return View(); } 2) воспользоваться объектом RouteData, который содержит данные запроса в виде словаря.


Слайд 23

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


×

HTML:





Ссылка: