Чтение онлайн

на главную - закладки

Жанры

Шрифт:

var users = mp.GetAllUsers(0, Int32.MaxValue, out userCount);

ViewData.Model = users;

return View ;

}

else

{

return RedirectToAction("Index", "Home");

}

}

Здесь, после проверки на принадлежность текущего пользователя к группе Administrators, создается список зарегистрированных пользователей, после чего он передается в специальный объект viewData, который в MVC Framework содержит модель данных, необходимых для представления. Если пользователь прошел проверку на принадлежность к группе Administrators, то после создания

набора действие завершится вызовом метода viewData, который сформирует представление, сопоставленное данному действию. В случае же, когда пользователь, не имеющий права на доступ к этому действию, вызовет его, действие перенаправит вызов на другое действие Index контроллера Home, что, по сути, означает перенаправление на главную страницу сайта.

Для отображения наших данных нам необходимо создать представление. В MVC Framework представление для контроллера должно создаваться по определенным правилам:

? все представления для определенного контроллера должны находиться в папке, название которой повторяет название контроллера, например: Home, Account;

? все такие папки должны находиться в папке Views, которая располагается в корне проекта или веб-сайта;

? каждый отдельный файл представления должен иметь название, совпадающее с именем действия контроллера, которому оно соответствует, например LogOn.aspx, Register.aspx.

Согласно этим правилам создадим папку Admin в папке Views, в которую через контекстное меню добавим представление Index (рис. 4.4).

Рис. 4.4. Пункт меню, позволяющий добавить новое представление

Рис. 4.5. Окно создания нового представления

В окне Add View (рис. 4.5) необходимо указать название представления (без расширения файла), остальные параметры пока оставьте без изменения. Добавим разметку и код для формирования представления в файле Index.aspx:

<asp:Content ID="Content2"

ContentPlaceHolderID="MainContent"

runat="server">

<h1>Список пользователей</h1>

<table>

<tr>

<th></th>

<th>Имя</th>

<th>Email</th>

<th>Последняя активность</th>

<th>Подтвержден</th>

<th>Заблокирован</th>

</tr>

<% foreach

(MembershipUser user in

(MembershipUserCollection)ViewData.Model) { %>

<tr>

<td><%= Html.ActionLink("Выбрать",

"Select",

new {userid = (Guid)user.ProviderUserKey}) %>

</td>

<td><%= Html.Encode(user.UserName) %></td>

<td><%= Html.Encode(user.Email) %></td>

<td><%= user.LastActivityDate %></td>

<td><%= user.IsApproved %></td>

<td><%= user.IsLockedOut %></td>

</tr>

<% } %>

</table>

</asp:Content>

Теперь

мы можем запустить проект и посмотреть на результат работы. Для этого нам необходимо войти в систему под пользователем Admin и перейти по адресусайт"/Admin. Если вы все сделали правильно, то результатом будет примерно такой список пользователей — рис. 4.6.

Рис. 4.6. Список пользователей

Для завершения создания контроллера реализуем все остальные необходимые действия так, как показано в листинге 4.1.

Листинг 4.1. Действия контроллера AdminController

public ActionResult Select(Guid? userId)

{

if (!userId.HasValue)

throw new HttpException(404, "Пользователь не найден");

if (User.IsInRole("Administrators"))

{

MembershipProvider mp = Membership.Provider;

MembershipUser user = mp.GetUser(userId, false);

ViewData.Model = user;

return View ;

}

else

{

return RedirectToAction("Index", "Home");

}

}

public ActionResult Update(Guid? userId,

string email,

bool isApproved,

bool isLockedOut)

{

if (!userId.HasValue)

throw new HttpException(404, "Пользователь не найден");

if (User.IsInRole("Administrators"))

{

MembershipProvider mp = Membership.Provider;

MembershipUser user = mp.GetUser(userId, false);

user.Email = email; user.IsApproved = isApproved;

if (user.IsLockedOut && !isLockedOut)

user.UnlockUser;

mp.UpdateUser(user);

return RedirectToAction("Index");

}

else

{

return RedirectToAction("Index", "Home");

}

}

public ActionResult Delete(Guid? userId)

{

if (!userId.HasValue)

throw new HttpException(404, "Пользователь не найден");

if (User.IsInRole("Administrators"))

{

MembershipProvider mp = Membership.Provider;

MembershipUser user = mp.GetUser(userId, false);

mp.DeleteUser(user.UserName, true);

return RedirectToAction("Index");

}

else

{

return RedirectToAction("Index", "Home");

}

}

В листинге 4.1 определено три действия для отображения данных конкретного пользователя, удаления данных и сохранения новых данных. Обратите внимание, что действия Update и Delete не возвращают сопоставленного представления, а только перенаправляют запрос на вызов других действий с имеющимися представлениями. Только действие Select возвращает сопоставленное представление. Давайте создадим соответствующее представление для контроллера Admin, назвав его Select, и определим его следующим образом:

Поделиться:
Популярные книги

Оковы страсти

Роджерс Розмари
Любовные романы:
исторические любовные романы
7.42
рейтинг книги
Оковы страсти

Дважды одаренный. Том II

Тарс Элиан
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.25
рейтинг книги
Дважды одаренный. Том II

Тринадцатый VI

NikL
6. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VI

Богатырские фамилии. Красные и белые (Сборники рассказов)

Алексеев Сергей Петрович
3. Собрание сочинений в трех томах
Проза:
историческая проза
5.25
рейтинг книги
Богатырские фамилии. Красные и белые (Сборники рассказов)

Навигаторы Апокалипсиса

Шалыгин Вячеслав Владимирович
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
Навигаторы Апокалипсиса

Библия. Синодальный перевод

Священное Писание
Религия и эзотерика:
религия
5.00
рейтинг книги
Библия. Синодальный перевод

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.67
рейтинг книги
Паладин из прошлого тысячелетия

Точка Бифуркации III

Смит Дейлор
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации III

Том 1. Повести, рассказы, стихи 1892-1894

Горький Максим
1. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 1. Повести, рассказы, стихи 1892-1894

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.50
рейтинг книги
Тринадцатый V

Дмитрий Донской. Битва за Святую Русь: трилогия

Балашов Дмитрий Михайлович
Проза:
историческая проза
5.00
рейтинг книги
Дмитрий Донской. Битва за Святую Русь: трилогия

Исцеляющая любовь

Сигал Эрик
История любви
Проза:
современная проза
8.19
рейтинг книги
Исцеляющая любовь

Золотое руно (сборник)

Сойер Роберт Джеймс
Шедевры фантастики
Фантастика:
научная фантастика
5.00
рейтинг книги
Золотое руно (сборник)

"Фантастика 2025-71". Компиляция. Книги 1-10

Ланцов Михаил Алексеевич
Фантастика 2025. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-71. Компиляция. Книги 1-10