1 / 82

ASP.NET MVC

Controller. View. Model. ASP.NET MVC. 2010. Web- фреймворки на основі архітектури MVC Підтримка ASP.NET MVC -проектування у MS Visual Studio . Маршрутизація в ASP.NET MVC -проектах

welsh
Download Presentation

ASP.NET MVC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Controller View Model ASP.NET MVC 2010

  2. Web-фреймворки на основі архітектури MVC Підтримка ASP.NET MVC-проектування у MS Visual Studio. Маршрутизація в ASP.NET MVC-проектах Приклад розробки проекту із використанням стратегії “від моделі” . Entity Framework як ORM-framework. Моделі, таблиці, класи в Entity Framework Контролери в ASP.NET MVC-проектах. Майстри генерації View для операцій перегляду, редагування, створення та вилучення даних Засади валідації в ASP.NET MVC-проектах. Використання partial-класів та метаданихНенав’язлива (Unobtrusive) Java-script валідація Зміст ASP.NET MVC - 2010

  3. Web-фреймворки на основі архітектури MVC http-запит View («web-сторінка») html-сторінка Диспетчер Controller Engine Mapping Model ІнодіView може бути простоhtml-сторінкою Mapping: URL-адреса --> Controller ASP.NET MVC - 2010

  4. Web-фреймворки на основі архітектури MVC Controller View Model Model – об’єкти, починаючи від бізнес-логіки і до логіки підтримки роботи з БД; View – інтерфейс (орієнтований на використання людиною); Controller – логіка взаємодії (між View та Model) у процесі отримання за запитом відпо-віді та підготовки до її відображення http-запит View («web-сторінка») html-сторінка Диспетчер Controller Engine Використовує ІнодіView може бути простоhtml-сторінкою Mapping Model Mapping: URL-адреса --> Controller ASP.NET MVC - 2010

  5. ASP NET MVC Framework Використання архітектури MVC надає технології ASP NET MVC такі важливі риси як ефективність та акуратність Controller View Model http-запит View («web-сторінка») html-сторінка Диспетчер Controller Engine • Диспетчер – має назву “маршрутизатор”; • Mapping – сукупність “маршрутів”. Окремий “маршрут” деяким варіантам URL-адрес ставить у відповідність дію (action) – метод “контроллер-класу” • View асоціюється з деякими варіантами web-сторінок: • aspx-сторінки; • razor-сторінки (файли з розширенням cshtml). Mapping Model ASP NET MVC: Можуть використовуватись й інші варіанти у відповідності до наявних Engine. ASP.NET MVC - 2010

  6. ASP.NET MVC-проекти. Використання майстра у MS Visual Studio ASP.NET MVC - 2010

  7. Налаштування проекту-заготівки (шаблонного проекту) ASP.NET MVC - 2010

  8. Робота з шаблонним проектом (1/2) ASP.NET MVC - 2010

  9. Робота з шаблонним проектом (2/2) ASP.NET MVC - 2010

  10. Структура шаблонного проекту. Угоди про каталоги, імена, ще один mapping (action -> view) Визначається mapping -угодою Обов’язкові каталоги Обов’язковий суфікс Структура ката-логів визнача-ється угодою Визначається mapping -угодою ASP.NET MVC - 2010 Файл HomeController.cs

  11. Маршрутизація. (Файл Global.asax) (1/2) Можна: • додавати нові маршрути; • забороняти (ігнорувати) маршрути; • задавати обмеження. Файл Global.asax (фрагмент) ASP.NET MVC - 2010

  12. Маршрутизація. (Файл Global.asax) (2/2) Файл Global.asax ASP.NET MVC - 2010

  13. Приклад маршрутизації. (Шаблонний проект. Файл HomeController.cs ) ASP.NET MVC - 2010

  14. Маршрутизація у розширеному проекті ”Mvc3_Students” (1/2) ASP.NET MVC - 2010

  15. Маршрутизація у розширеному проекті ”Mvc3_Students” (2/2) action = “Index” (за замовуванням) Файл Global.asax (фрагмент) ASP.NET MVC - 2010

  16. Розширений проект ”Mvc3_Students”. Використання стратегії розробки “від моделі” EDM– Entity Data Model Ім’я моделі ASP.NET MVC - 2010

  17. Створення порожньої моделі та додавання сутності.(Entity Data Model, EDM) ASP.NET MVC - 2010

  18. Сутність (entity) Student ASP.NET MVC - 2010

  19. Запуск майстра створення бази даних за моделлю ASP.NET MVC - 2010

  20. Діалогові вікна майстра створення БД (1/4) ASP.NET MVC - 2010

  21. Діалогові вікна майстра створення БД (2/4) Установлення підключення до БД ASP.NET MVC - 2010

  22. Діалогові вікна майстра створення БД (3/4) DDL-код ASP.NET MVC - 2010

  23. Діалогові вікна майстра створення БД (4/4) Запуск скрипта ASP.NET MVC - 2010

  24. Виконання SQL-скрипта (вимагає під’єднання до БД) Зауваження. SQL ServerCompact Edition – не дуже вдалий інструментарій для нашої задачі (наявні проблеми з Identity, що мав би забезпечувати підтримку автоматичної генерації ключів – див. слайд “Сутність (entity) Student”) ASP.NET MVC - 2010

  25. Entity Framework. Моделі, таблиці, класи Model - ім’я нашої моделі ASP.NET MVC - 2010

  26. Таблиця Students. Наповнення таблиці ASP.NET MVC - 2010

  27. Файл Model.Designer.cs (фрагменти) ModelContainer, Student – два класи, згенеровані Emptity Framework (ORM-фреймворком) Model – обране ім’я для нашої моделі ASP.NET MVC - 2010

  28. Контролери. Вікно майстра генерації контролера ! ASP.NET MVC - 2010

  29. Файл StudController.cs(згенерований майстром) using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Mvc3_Students.Controllers { public class StudController : Controller { // // GET: /Stud/ public ActionResult Index() { return View(); } // // GET: /Stud/Details/5 public ActionResult Details(int id) { return View(); } // // GET: /Stud/Create public ActionResult Create() { return View(); } . . . ASP.NET MVC - 2010

  30. Дії (методи Action) контролерів publicActionResult Details(int id) { return View(); } Від ActionResult успадковуються: • ViewResult; //для задання View • EmptyResult; • RedirectResult; //для перенаправлення "на інший URL" • JsonResult; • ContentResult; //для задання тексту • FileContentResult; • . . . ASP.NET MVC - 2010

  31. Дії (методи Action) контролерів. Приклад // GET: /Stud/Details/5 publicActionResult Details(int id) // Варіант 1 { var ctx = new Mvc3_Students.Models.ModelContainer(); return View(ctx.Students.SingleOrDefault(st => st.Id == id)); } StudController // GET: /Stud/Details/5 publicActionResult Details(int id) // Варіант 2 { var ctx = new Mvc3_Students.Models.ModelContainer(); ViewData.Model = ctx.Students.SingleOrDefault(st => st.Id == id); return View(); } StudController ASP.NET MVC - 2010

  32. Файл StudController.cs . Реалізація дії (action) Index. Генерація (додавання) View Ім’я моделі ModelContainer – контейнерний клас, згене-рований Emptity Framework (ORM-фреймворком) ПКМ в межах Action ASP.NET MVC - 2010

  33. Вікно майстра генерація View (для ActionIndex) Створення View (Index.cshtml) ! ASP.NET MVC - 2010

  34. Файл Views\Stud\Index.cshtml(view, згенерований майстром ) @model IEnumerable<Mvc3_Students.Models.Student> @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th></th> <th> Name </th> <th> Course </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.ActionLink("Edit", "Edit", new { id=item.Id }) | @Html.ActionLink("Details", "Details", new { id=item.Id })| @Html.ActionLink("Delete", "Delete", new { id=item.Id }) </td> <td> @item.Name </td> <td> @item.Course </td> </tr> } </table> Фрагмент веб-сторінки у браузері ASP.NET MVC - 2010 Index.cshtml

  35. Зміни у шаблоні_Layout.cshtml Змінено Додано ASP.NET MVC - 2010

  36. Поточний стан розробки проекту СторінкаIndex ASP.NET MVC - 2010

  37. Details (action, view) Action Створення View (Details.cshtml) ! СторінкаDetails ASP.NET MVC - 2010

  38. Файл Details.cshtml– view(допрацьована україномовна версія сторінки) ASP.NET MVC - 2010

  39. Зауваження до маршрутизації та реалізації Action-методів (1/2) Перегляд HTML-коду сторінки (у браузері) ASP.NET MVC - 2010

  40. Зауваження до маршрутизації та реалізації Action-методів (2/2) Перегляд HTML-коду сторінки (у браузері) ASP.NET MVC - 2010

  41. До реалізації Create View, як інтерфейс, для обох запитів може бути обраний один, але ці запитии потребують різної обробки (зауважимо, що один з них є HttGet-запитом, а інший – запитом HttPost). /Stud/Create ASP.NET MVC - 2010

  42. Два Action-методи Create // GET: /Stud/Create publicActionResult Create() { return View(newStudent()); } // POST: /Stud/Create [HttpPost] publicActionResult Create(Student stToAdd) { if (!ModelState.IsValid) return View(stToAdd); var ctx = newModelContainer(); ctx.AddToStudents(stToAdd); ctx.SaveChanges(); return RedirectToAction("Index"); } ASP.NET MVC - 2010

  43. Create. Створення View Створення View (Create.cshtml) СторінкаCreate ! ASP.NET MVC - 2010

  44. Файл Create.cshtml У проекті використано спрощений підхід до маніпулювання ключами Id @model Mvc3_Students.Models.Student @{ ViewBag.Title = "Create"; } <h2>Create</h2> <scriptsrc="@Url.Content("~/Scripts/jquery.validate.min.js")"type="text/javascript"></script> <scriptsrc="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"type="text/javascript"></script> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Student</legend> <divclass="editor-label"> @Html.LabelFor(model => model.Name) </div> <divclass="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) @*. . . Course *@ </div> <p><inputtype="submit"value="Create"/></p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> <divclass="editor-label"> @Html.LabelFor(model => model.Id) </div> <divclass="editor-field"> @Html.EditorFor(model => model.Id) @Html.ValidationMessageFor(model => model.Id) </div> Додано для Id Name- фрагмент Подібний Course-фрагмент ASP.NET MVC - 2010

  45. Два Action-методи Edit // GET: /Stud/Edit/5 [HttpGet] publicActionResult Edit(int id) { var ctx = new Mvc3_Students.Models.ModelContainer(); return View(ctx.Students.Single(x => x.Id == id)); } // POST: /Stud/Edit/5 publicActionResult Edit(Student student) { if (!ModelState.IsValid) return View(student); var ctx = new Mvc3_Students.Models.ModelContainer(); var studOld = ctx.Students.Single(s => s.Id == student.Id); studOld.Course = student.Course; studOld.Name = student.Name; ctx.SaveChanges(); return RedirectToAction("Index"); } Використовується форма (View) для редагування ASP.NET MVC - 2010

  46. Edit . Створення View Створення View (Edit.cshtml) СторінкаEdit ! ASP.NET MVC - 2010

  47. Delete. Два Action-методи Використовується форма (View) для перегляду і підтвердження // GET: /Stud/Delete/5 publicActionResult Delete(int id) { var ctx = new Mvc3_Students.Models.ModelContainer(); return View(ctx.Students.Single(x => x.Id == id)); } // POST: /Stud/Delete/5 [HttpPost] publicActionResult Delete(Student student) { try { var ctx = new Mvc3_Students.Models.ModelContainer(); var stud = ctx.Students.Single(s => s.Id == student.Id); ctx.DeleteObject(stud); ctx.SaveChanges(); return RedirectToAction("Index"); } catch { return View(); } } ASP.NET MVC - 2010

  48. Delete. Створення View Створення View (Delete.cshtml) СторінкаDelete ! ASP.NET MVC - 2010

  49. Специфіка проектів з SQL Server Compact Edition Потрібно додати! ASP.NET MVC - 2010

  50. Валідація. Сторінка Log On (1/3) Сторінка Log On шаблонного проекту ASP.NET MVC - 2010

More Related