Передача данных между контроллерами и представлениями

Для передачи данных между контроллерами и представлениями возможно использование двух способов: нетипизированное хранилище данных и типизированный объект Model.

Нетипизированное хранилище данных реализуется классов ViewBag. В классе ViewBag можно динамически определять свойства и выполнять операции чтения и записи. Динамическое свойство определяется в момент выполнения записи данных:

public ActionResult About()

{

ViewBag.Name = "Страница 1.";

 

return View();

}

 

Пример чтения этого свойства и вывода в HTML интерфейсе приведен в следующем примере:

<div>@ViewBag.Name</div>

Для передачи типизированного объекта используется метод View:

 

public ActionResult Details(int id)

{

Vacancy v = ........ //загрузка объекта из репозитория

 

return View(v);

}

 

……………………………………………..

public class Vacancy

{

 

public int Id { get; set; }

 

public string Name { get; set; }

 

}

Для обращения к переданному типизированному объекту используется ключевое слово Model:

Model Vacancy

....

....

....

<div>@Model.Name</div>

 

Для передачи данных, введенных пользователем, используются HTML-формы.

 

@using (Html.BeginForm("Create", "Vacancy", FormMethod.Post, new { enctype = "multipart/form-data" }))

{

 

<input type="text" name="Name" id="Name"/>

<input class="inputImg" type="submit" id="btnSendFeedback" value="">

 

 

}

 

Пример обработки формы классом-контроллером:

 

[HttpPost]

public ActionResult Create(Vacancy pr)

{

if (ModelState.IsValid)

{

StringBuilder str = new StringBuilder();

.............

 

str.AppendLine(pr.Name);

............

 

return RedirectToAction("Success");

}

return View(pr);

}

 

……………………………………………..

public class Vacancy

{

 

public string Name { get; set; }

 

}

Задание

Изучите архитектуру ASP.NET MVC приложений, используя источники из списка.

В решение, созданное в ходе выполнения лабораторной работы №1, добавьте новый проект ASP.NET MVC web application. Для его использования необходимо добавить ссылку проект DomainModel (создан при выполнении лабораторной работы №1).

 

----Рис. Структура решения

 

Добавьте контроллер в программное приложение.

……

Реализуйте метод Index, который обычно используется для вывода списка записей (списка объектов сущностей).

Реализуйте метод Details.

Реализуйте методы Create.

Реализуйте методы Edit.

 

Все программные приложения должны реализовывать операции CRUD (операции просмотра списка объектов сущностей, добавление нового объекта, удаление, редактирования существующего). Элементы интерфейса пользователя должны быть переведены на русский язык и быть выровнены относительно друг друга.

Отчет по лабораторной работе должен включать следующие разделы:

1.Задание

2.Описание решения

a.Перечень функциональных требований, диаграмма Use-case

b.Описание классов-контроллеров

c.Описание интерфейса пользователя

3.Заключение

4.Список использованных источников

Контрольные вопросы

1.Из какого количество проектов состоит выполненное вами решение? Какое назначение каждого из проектов?

2. Каким образом определяется контроллер и его метод для обработки HTTP запроса, отправленного веб-браузером пользователя?

3. Как в среде разработки Visual Studio добавить ссылку текущего проекта на другой модуль (проект)?

 

Список рекомендуемых источников

1. Конспект лекций по дисциплине "Методы и средства проектирования информационных систем и технологий"

2.Общие сведения о ASP.NET MVC // MSDN URL: https://msdn.microsoft.com/ru-ru/library/dd381412(v=vs.108).aspx (дата обращения: 09.05.2016).

3. HTML 5 // W3C Schools URL: http://www.w3schools.com (дата обращения: 09.05.2016).

4. ASP.NET MVC. Урок 0. Вступление // Hbrahabr URL: https://habrahabr.ru/post/175999/ (дата обращения: 09.05.2016).