Для примера рассмотрим проект ASP.NET MVC, который создается по умолчанию:
□ в файле AccountController.cs определен класс-контроллер AccountController
, который содержит набор методов, возвращающих результат типа ActionResult
;
□ класс AccountController
, кроме всего прочего, содержит методы LogOn , LogOff, Register, ChangePassword и ChangePasswordSuccess
, которые являются действиями, возвращающими результат типа ActionResult
;
□ действия этого класса возвращают разнообразные типы значений. Так, большинство действий возвращают результат типа ViewResult
, вызывая стандартный метод View
. Некоторые методы могут вернуть результат в виде RedirectResult
с помощью вызова метода Redirect
или RedirectToRouteResult
с помощью RedirectToAction
;
□ в зависимости от типа возвращаемого значения пользователь получит определенный результат. Если метод вернул ViewResult
, то пользователь получит HTML-код и увидит страницу. В случае когда результатом вызова действия будут данные типа RedirectResult
, то браузер пользователя перенаправит вызов на другую страницу. В случае же когда тип возвращаемого значения — это RedirectToRouteResult
, MVC Framework перенаправит вызов на другое действие текущего или иного контроллера.
Рассмотрим более конкретный пример, метод LogOn
класса AccountController
:
public ActionResult LogOn(string userName,
string password,
bool rememberMe,
string returnUrl)
{
if (!ValidateLogOn(userName, password))
{
return View () ;
}
FormsAuth.SignIn(userName, rememberMe) ;
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
Этот метод представляет действие, которое в зависимости от полученных от пользователя данных производит авторизацию пользователя либо сообщает об ошибке авторизации. В данном случае выполняется проверка данных пользователя и, если они неверны, возвращается стандартное представление, сопоставленное данному действию. Если данные верны, происходит авторизация, и пользователь перенаправляется либо на главную страницу, либо на URL, указанный в параметре returnUrl
. Перенаправление на главную страницу происходит через вызов метода RedirectToAction
, который возвращает результат типа RedirectToRouteResult
, перенаправление на другой URL происходит через вызов Redirect
, который возвращает результат типа RedirectResult
.
Простой пример реализации контроллера
Чтобы показать на примере реализацию контроллера в MVC Framework, создадим новый контроллер для проекта, который формируется по умолчанию. Этот контроллер должен будет реализовывать простейшие административные действия, например, выводить список пользователей, создавать их, блокировать, менять пользователям пароль. Заметим, что наша первая реализация будет весьма простой, имеющей недостатки, которые по ходу этой главы будут исправляться при описывании очередной темы.
Перед созданием нашего примера заполним базу данных пользователей данными:
□ добавим две роли пользователей: Administrators
и Users
;
□ добавим пользователей Admin
с ролью Administrators
и User
с ролью Users
.
Для добавления этих данных необходимо воспользоваться встроенным в Visual Studio средством для управления пользователями, которое можно вызвать, нажав последнюю иконку на панели Solution Explorer, которая появляется во время того, когда активен проект, реализующий поддержку стандартных провайдеров базы данных пользователей (рис. 4.1).

Рис. 4.1. Панель кнопок Solution Explorer
Для того чтобы создать контроллер в Visual Studio 2008, необходимо проделать следующие действия: в контекстном меню папки Controllers выбрать пункт Add, затем Controller (рис. 4.2).

Рис. 4.2. Пункт меню, позволяющий добавить в проект новый контроллер
В появившемся окне необходимо ввести название класса нового контроллера, в нашем случае AdminController
(рис. 4.3).
После этого Visual Studio сгенерирует в пространстве имен по умолчанию необходимый нам класс:
public class AdminController : Controller {
//
// GET: /Admin/
public ActionResult Index() {
return View();
}
}

Читать дальше
Конец ознакомительного отрывка
Купить книгу