Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_ekzamenu.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
563.9 Кб
Скачать
  1. Создание класса, реализующего интерфейс iController.

Контроллер представляет обычный класс, который наследуется от базового класса System.Web.Mvc.Controller.

В свою очередь класс Controller реализует абстрактный базовый класс ControllerBase, а через него и интерфейс IController. Таким образом, формально, чтобы создать свой класс контроллера, достаточно создать класс, реализующий интерфейс IController и имеющий в имени суффикс Controller.

Интерфейс IController определяет один единственный метод Execute, который отвечает за обработку контекста запроса.

  1. Создание контроллера за счет наследования от класса Controller

Класс Controller обеспечивает поддержку обработки запросов, которая знакома большинству разработчиков приложений MVC и предоставляет три ключевых средства:

      • Методы действий

Поведение контроллера разнесено по множеству методов (вместо реализации в виде единственного метода Execute()). Каждый метод действия отображается на соответствующий URL и вызывается с параметрами, извлеченными из входящего запроса.

      • Результаты действий

Можно возвращать объект, описывающий результат выполнения действия (например, визуализация представления либо перенаправление на другой URL или метод действия), и затем обрабатывать его каким угодно образом. Разделение между указанием результатов и их выполнением упрощает модульное тестирование.

      • Фильтры

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

Visual Studio предлагает удобные средства для создания контроллеров.

Чтобы ими воспользоваться, нажмем на папку Controllers правой кнопкой мыши и в появившемся меню выберем Add -> Controller....

После этого нам отобразится окно создания нового контроллера.

Далее будет предложено ввести имя, и после этого новый контроллер с единственным методом Index будет добавлен в проект.

При таком добавлении для данного контроллера будет автоматически создан каталог в папке Views, который будет хранить все представления, связанные с действиями этого контроллера

Методы действий (action methods):

Методы действий (action methods) представляют такие методы контроллера, которые обрабатывают запросы по определенному URL.

  • Методы Index и Buy являются методами действий или просто действиями контроллера. При получении запроса типа /Home/Index контроллер передает обработку запроса действию Index.

  • Фреймворк ASP.NET MVC позволяет определить тип обрабатываемого запроса для действия, применив к нему соответствующий атрибут: [HttpGet], [HttpPost], [HttpDelete] или [HttpPut]. Так, действие Buy разбито на два метода, по одному для каждого типа запроса.

  • Методы действий всегда имеют модификатор public. Закрытых приватных методов действий не бывает.

  • Контроллер может также включать и обычные методы (модификатор private), которые могут использоваться в вспомогательных целях.

public class HomeController : Controller

{

BookContext db = new BookContext();

public ActionResult Index()

{

IEnumerable<Book> books = db.Books;

ViewBag.Books = books;

return View();

}

[HttpGet]

public ActionResult Buy(int id)

{

ViewBag.BookId = id;

return View();

}

[HttpPost]

public string Buy(Purchase purchase)

{

purchase.Date = DateTime.Now;

db.Purchases.Add(purchase);

db.SaveChanges();

return "Спасибо, " + purchase.Person + ", за покупку!";

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]