SlideShare a Scribd company logo
1 of 31
Курс по информационни
технологии
Занятие №7
ASP.NET MVC

2013
Съдържание 1/3
• MVC
–
–
–
–
–
–

Какво е MVC?
История на MVC
Основни принципи на MVC
Контролери
Модели
Изгледи
Съдържание 2/3
• ASP.NET MVC
–
–
–
–
–

Какво е ASP.NET MVC?
История на ASP.NET MVC
Предимства
Недостатъци
Separation of Concerns

• ASP.NET MVC приложения
–
–
–
–

Обработка на заявка
Контролери
Действия
Модели
Съдържание 3/3
• ASP.NET MVC приложения
–
–
–
–
–
–

Изгледи
Razor
Помощници
Частични изгледи
Филтриране
Рутиране
MVC
• Какво е MVC?
– Шаблон за разработка на приложения
– Позволява преизползване на кода
– SoC (Separation of Concerns)

• История на MVC
– Формулиран през 70те на миналия век от Trygve
Reenskaug
– Имплементиран в Smalltalk за настолни приложения
– Адаптиран за други видове приложения
Основни принципи на MVC
• Модел, изглед и контролер
• Мястото на потребителя
• Предимства на MVC
–…

• Недостатъци на MVC
– По-сложен от други подходи
Контролери
• Обработват заявката с помощта на модели и
изгледи
• Осигуряват взаимодействие с потребителя
• Контролират работата на приложението
• Реализират логика специфична за приложението
Модели
• Множество от класове представляващи бизнес
логиката и данните, с които тя работи
• Контролират правилата за валидиране и
манипулиране на данните
• Скриват достъпа до данните (съотв. могат да се
разглеждат като слой за достъп до данни)
Изгледи
• Определят изхода на приложението
ASP.NET MVC
• Какво е ASP.NET MVC?
– Реализация на MVC за ASP.NET приложения
– Безплатен проект под Apache 2.0 лиценз
– Не замества ASP.NET Web Forms

• История на ASP.NET MVC
–
–
–
–

CTP версия – 10 октомври 2007 (Scott Guthrie)
Версия 1.0 – 13 март 2009
Версия 4.0 – 15 август 2012 / 30 май 2013
Версия 5.0 preview – 26 юни 2013
ASP.NET MVC
• Предимства
–
–
–
–
–

По-добър контрол върху изхода
Тестваем
Слабо обвръзване (loose coupling)
Разширяем
Конвенции над конфигурация

• Недостатъци
• Separation of Concerns
– SRP (Single Responsibility Principle)
– DRY (Don’t Repeat Yourself)
– TDD (Test-Driven Development)
Обработка на заявка
Постъпва HTTP заявка
Определя се контролер
Контролерът създава модел
Изпълнява се действието на контролера
Избира се подходящ изглед (резултат)
Моделът се подава на изгледа
Изгледът преобразува модела в подходящ
формат
• Изпраща се HTTP отговор
•
•
•
•
•
•
•
Обработка на заявка
Контролери
• Контролерите се разполагат в папка “Controllers”
• Контролерите са класове наследяващи класа
Controller
• Наименованията на класовете на контролерите
завършват с “Controller”
• На различните заявки съответства определено
действие
• Всеки контролер реализира едно или повече
действия под формата на методи
Действия - характеристики
• Действия
– Всяко действие е публичен нестатичен метод на
съответния контролер
– Всяко действие има параметри
– Всяко действие връща резултат
• Резултатът може да е всякакъв
• Често използван резултат е инстанция на ActionResult
Действия - параметри
• Данните от заявката се превръщат в параметри
към методите за действия
– Подаване на параметри с рутиране
– Подаване на параметри с GET заявка
– Подаване на параметри с POST заявка

• Контрол над поведението на методите за
действия със селектори
– Наименование – [ActionName]
– Метода –
[HttpGet], [HttpPost], [HttpDelete], [HttpOptions] и т.н.
– Ограничения – [NoAction], [ChildActionOnly] и
[RequireHttps]
Действия - резултати
Наименование

Цел

Метод

ContentResult

Низ

Content()

EmptyResult

Празен отговор

FileContentResult
FilePathResult
FileStreamResult

Файлово съдържание

HttpUnauthorizedResult

HTTP 403 Status Code

JavaScriptResult

JavaScript, който да се
изпълни

JavaScript()

JsonResult

Данни в JSON формат

Json()

RedirectResult

Препращане към друг URL

Redirect()
RedirectPermanent()

RedirectToRouteResult

Препращане към друго
действие

RedirectToRoute()
RedirectToAction()

ViewResult
PartialViewResult

Изглед от view engine

View()
PartialView()

File()
Модели
• Модели
– Моделите се разполагат в папка /Models/
– Отразяват правилата на бизнес логиката на
приложението за авторизация, валидация и т.н.
– Контролират достъпа до данните и тяхната
манипулация
– Изолират работата с данните и в този смисъл
представляват слой за достъп до данните
Изгледи
• Представляват шаблони за динамична
визуализация на данните в папка /Views/
• Различни машини за изгледи (view engines)
– Изпълняват код, за генериране на изхода
– Дават “помощници” за генериране на изхода
– Най-популярни машини са Razor и Web Forms

• Данни към изгледа се поддават с колекцията
ViewBag, динамични обект ViewData или
статичния обект Model (силно типизиране)
• Поддръжка на оформления (layouts)
• Поддръжка на частични изгледи (partial views)
Razor - основи
•
•
•
•
•
•
•
•
•
•

Език за разработка на шаблони
Razor кодът започва със символа “@”
Екраниране на “@” с “@@”
Коментари с “@*...*@”
Razor блоковете от код с “@{…}”
Визуализация на текст става с “@:”
Изрази с “@(…)”
C# конструкции като if, else, for, foreach и т.н.
Включване пространство на имената с “@using”
Дефиниране типа на модела с “@model”
Помощници
• Всеки изглед наследява WebViewPage, а той ViewPage
– ViewPage има помощни свойства Html, Ajax, Url и др.
съответно от клас HtmlHelper, AjaxHelper, UrlHelper и
др.
– ViewPage може да има и собствени помощни свойства

• Помощните методи връщат резултат под
формата на низове
Собствени помощници
• Разработка на собствени помощни свойства с
код
– Разширяващи методи на класовете на съответните
помощници
– Връщат низове, презаписват метода ToString() или
генерират тагове/атрибути като връщат TagBuilder

• Разработка на собствени помощни свойства с
Razor
– Шаблон /App_Code/Helpers.cshtml и “@helper”
Razor - оформления
• Подразбиращо се оформление в
/Views/_ViewStart.cshtml
• В изгледа: Всеки изглед може да контролира
своето оформление с променливата Layout
• В оформлението: Визуализиране на
съдържанието с @RenderBody()
Razor – оформления и секции
• В изгледа: Дефиниране на секция с “@section
Name { … }”
• В оформлението: Визуализиране на секция с
@RenderSection(name, isRequired)”
• В оформлението: Използване на
“@IsSectionDefined()”
Частични изгледи
• Частичните изгледи се намират в папка /Views/
или в папката /View/Shared/
• Частичните изгледи отново са стандартни
шаблони
• Частичните изгледи визуализират части от
страницата
– Преизползване на части от изгледите
– Помощници – Partial, RenderPartial и Action
Структура и конфигуриране
• Структура на ASP.NET MVC приложение
• Конфигуриране на ASP.NET MVC приложение
– Конфигуриране с конфигурация в Web.config
– Конфигуриране с код в Global.asax

•
•
•
•
•
•

Web API
Филтриране
Валидиране
Рутиране
Пакети (bundles)
Автентикация
Рутиране
• Контролира съответствието между образци на
адреси и контролер/действие/параметри
• Осигурява добре изглеждащи, REST-like и SEO
адреси
• Дефиниране на рутиране
–
–
–
–

Наименование
Образец на адреса
Съответстващи контролер/действие/параметри
Ограничени за параметрите

• Дебъгване на рутирането с RouteDebugger
Филтриране
• Филтрирането може да се прилага преди и след
изпълнението на определена логика
• Филтрирането може да се прилага върху
действия и контролери
• Глобални филтри се регистрират в
GlobalFilters.Filters (или /App_Start/FilterConfig.cs)
• Собствени филтри за действия
– Разполагат се в папка /Filters/
– Наследяват ActionFilterAttribute
– Приложими върху контролер, действие или глобално
в GlobalFilters.Filters
ASP.NET MVC
// ДЕМОНСТРАЦИЯ
Въпроси?
Благодаря!
• Валери Дачев
–
–
–
–

valery@david.bg
http://vdachev.net/
@vdachev
https://www.facebook.com/vdachev

• ДАВИД академия
–
–
–
–

acad@david.bg
http://acad.david.bg/
@david_academy
https://www.facebook.com/groups/david.academy/

More Related Content

More from DAVID Academy

Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14DAVID Academy
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13DAVID Academy
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12DAVID Academy
 
Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3DAVID Academy
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkDAVID Academy
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLDAVID Academy
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...DAVID Academy
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...DAVID Academy
 

More from DAVID Academy (20)

Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSS
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
 
Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTML
 
Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
 
Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7Училищен курс по програмиране на C# (2013/2014), занятие №7
Училищен курс по програмиране на C# (2013/2014), занятие №7
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - Помагало
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - Упражнения
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
 

Курс по информационни технологии (2013) - 7. ASP.NET MVC

  • 2. Съдържание 1/3 • MVC – – – – – – Какво е MVC? История на MVC Основни принципи на MVC Контролери Модели Изгледи
  • 3. Съдържание 2/3 • ASP.NET MVC – – – – – Какво е ASP.NET MVC? История на ASP.NET MVC Предимства Недостатъци Separation of Concerns • ASP.NET MVC приложения – – – – Обработка на заявка Контролери Действия Модели
  • 4. Съдържание 3/3 • ASP.NET MVC приложения – – – – – – Изгледи Razor Помощници Частични изгледи Филтриране Рутиране
  • 5. MVC • Какво е MVC? – Шаблон за разработка на приложения – Позволява преизползване на кода – SoC (Separation of Concerns) • История на MVC – Формулиран през 70те на миналия век от Trygve Reenskaug – Имплементиран в Smalltalk за настолни приложения – Адаптиран за други видове приложения
  • 6. Основни принципи на MVC • Модел, изглед и контролер • Мястото на потребителя • Предимства на MVC –… • Недостатъци на MVC – По-сложен от други подходи
  • 7. Контролери • Обработват заявката с помощта на модели и изгледи • Осигуряват взаимодействие с потребителя • Контролират работата на приложението • Реализират логика специфична за приложението
  • 8. Модели • Множество от класове представляващи бизнес логиката и данните, с които тя работи • Контролират правилата за валидиране и манипулиране на данните • Скриват достъпа до данните (съотв. могат да се разглеждат като слой за достъп до данни)
  • 10. ASP.NET MVC • Какво е ASP.NET MVC? – Реализация на MVC за ASP.NET приложения – Безплатен проект под Apache 2.0 лиценз – Не замества ASP.NET Web Forms • История на ASP.NET MVC – – – – CTP версия – 10 октомври 2007 (Scott Guthrie) Версия 1.0 – 13 март 2009 Версия 4.0 – 15 август 2012 / 30 май 2013 Версия 5.0 preview – 26 юни 2013
  • 11. ASP.NET MVC • Предимства – – – – – По-добър контрол върху изхода Тестваем Слабо обвръзване (loose coupling) Разширяем Конвенции над конфигурация • Недостатъци • Separation of Concerns – SRP (Single Responsibility Principle) – DRY (Don’t Repeat Yourself) – TDD (Test-Driven Development)
  • 12. Обработка на заявка Постъпва HTTP заявка Определя се контролер Контролерът създава модел Изпълнява се действието на контролера Избира се подходящ изглед (резултат) Моделът се подава на изгледа Изгледът преобразува модела в подходящ формат • Изпраща се HTTP отговор • • • • • • •
  • 14. Контролери • Контролерите се разполагат в папка “Controllers” • Контролерите са класове наследяващи класа Controller • Наименованията на класовете на контролерите завършват с “Controller” • На различните заявки съответства определено действие • Всеки контролер реализира едно или повече действия под формата на методи
  • 15. Действия - характеристики • Действия – Всяко действие е публичен нестатичен метод на съответния контролер – Всяко действие има параметри – Всяко действие връща резултат • Резултатът може да е всякакъв • Често използван резултат е инстанция на ActionResult
  • 16. Действия - параметри • Данните от заявката се превръщат в параметри към методите за действия – Подаване на параметри с рутиране – Подаване на параметри с GET заявка – Подаване на параметри с POST заявка • Контрол над поведението на методите за действия със селектори – Наименование – [ActionName] – Метода – [HttpGet], [HttpPost], [HttpDelete], [HttpOptions] и т.н. – Ограничения – [NoAction], [ChildActionOnly] и [RequireHttps]
  • 17. Действия - резултати Наименование Цел Метод ContentResult Низ Content() EmptyResult Празен отговор FileContentResult FilePathResult FileStreamResult Файлово съдържание HttpUnauthorizedResult HTTP 403 Status Code JavaScriptResult JavaScript, който да се изпълни JavaScript() JsonResult Данни в JSON формат Json() RedirectResult Препращане към друг URL Redirect() RedirectPermanent() RedirectToRouteResult Препращане към друго действие RedirectToRoute() RedirectToAction() ViewResult PartialViewResult Изглед от view engine View() PartialView() File()
  • 18. Модели • Модели – Моделите се разполагат в папка /Models/ – Отразяват правилата на бизнес логиката на приложението за авторизация, валидация и т.н. – Контролират достъпа до данните и тяхната манипулация – Изолират работата с данните и в този смисъл представляват слой за достъп до данните
  • 19. Изгледи • Представляват шаблони за динамична визуализация на данните в папка /Views/ • Различни машини за изгледи (view engines) – Изпълняват код, за генериране на изхода – Дават “помощници” за генериране на изхода – Най-популярни машини са Razor и Web Forms • Данни към изгледа се поддават с колекцията ViewBag, динамични обект ViewData или статичния обект Model (силно типизиране) • Поддръжка на оформления (layouts) • Поддръжка на частични изгледи (partial views)
  • 20. Razor - основи • • • • • • • • • • Език за разработка на шаблони Razor кодът започва със символа “@” Екраниране на “@” с “@@” Коментари с “@*...*@” Razor блоковете от код с “@{…}” Визуализация на текст става с “@:” Изрази с “@(…)” C# конструкции като if, else, for, foreach и т.н. Включване пространство на имената с “@using” Дефиниране типа на модела с “@model”
  • 21. Помощници • Всеки изглед наследява WebViewPage, а той ViewPage – ViewPage има помощни свойства Html, Ajax, Url и др. съответно от клас HtmlHelper, AjaxHelper, UrlHelper и др. – ViewPage може да има и собствени помощни свойства • Помощните методи връщат резултат под формата на низове
  • 22. Собствени помощници • Разработка на собствени помощни свойства с код – Разширяващи методи на класовете на съответните помощници – Връщат низове, презаписват метода ToString() или генерират тагове/атрибути като връщат TagBuilder • Разработка на собствени помощни свойства с Razor – Шаблон /App_Code/Helpers.cshtml и “@helper”
  • 23. Razor - оформления • Подразбиращо се оформление в /Views/_ViewStart.cshtml • В изгледа: Всеки изглед може да контролира своето оформление с променливата Layout • В оформлението: Визуализиране на съдържанието с @RenderBody()
  • 24. Razor – оформления и секции • В изгледа: Дефиниране на секция с “@section Name { … }” • В оформлението: Визуализиране на секция с @RenderSection(name, isRequired)” • В оформлението: Използване на “@IsSectionDefined()”
  • 25. Частични изгледи • Частичните изгледи се намират в папка /Views/ или в папката /View/Shared/ • Частичните изгледи отново са стандартни шаблони • Частичните изгледи визуализират части от страницата – Преизползване на части от изгледите – Помощници – Partial, RenderPartial и Action
  • 26. Структура и конфигуриране • Структура на ASP.NET MVC приложение • Конфигуриране на ASP.NET MVC приложение – Конфигуриране с конфигурация в Web.config – Конфигуриране с код в Global.asax • • • • • • Web API Филтриране Валидиране Рутиране Пакети (bundles) Автентикация
  • 27. Рутиране • Контролира съответствието между образци на адреси и контролер/действие/параметри • Осигурява добре изглеждащи, REST-like и SEO адреси • Дефиниране на рутиране – – – – Наименование Образец на адреса Съответстващи контролер/действие/параметри Ограничени за параметрите • Дебъгване на рутирането с RouteDebugger
  • 28. Филтриране • Филтрирането може да се прилага преди и след изпълнението на определена логика • Филтрирането може да се прилага върху действия и контролери • Глобални филтри се регистрират в GlobalFilters.Filters (или /App_Start/FilterConfig.cs) • Собствени филтри за действия – Разполагат се в папка /Filters/ – Наследяват ActionFilterAttribute – Приложими върху контролер, действие или глобално в GlobalFilters.Filters
  • 31. Благодаря! • Валери Дачев – – – – valery@david.bg http://vdachev.net/ @vdachev https://www.facebook.com/vdachev • ДАВИД академия – – – – acad@david.bg http://acad.david.bg/ @david_academy https://www.facebook.com/groups/david.academy/