Отображать список доступных ролей из БД в виде флажков, как NerdDinner со странами - PullRequest
0 голосов
/ 03 апреля 2009

У меня есть проект ASP.NET MVC в C #, использующий проверку подлинности с помощью форм, и Active Directory является поставщиком членства (пользователи входят в систему со своим существующим uid / pwd). Тем не менее, я хотел бы, чтобы роли были предоставлены aspnet_Roles (таблица по умолчанию, созданная приложением). В моем Web.config у меня есть: с настройками по умолчанию для этого узла.

Я успешно выполнил пример PDF-приложения NerdDinner и хочу использовать то, что узнал. В моем приложении я использую шаблон Repository, как и NerdDinner. В NerdDinner показано, как использовать метод Helper для заполнения DropDownList. Я хотел бы сделать то же самое, но вместо стран и DropDown я хотел бы вытащить роли из таблицы и установить флажки.

В моем UsersController.cs у меня есть:

//
// ViewModel Classes
public class UserFormViewModel
{
    // properties
    public User User { get; private set; }
    public SelectList Roles { get; private set; }

    // Constructor
    public UserFormViewModel(User user)
    {
        User = user;
        Roles = new SelectList(Roles.All, ); //this is where I have problems
    }
}

На мой взгляд, у меня есть (что, конечно, не будет работать):

<ul>
    <% foreach (var role in Roles as IEnumerable<SelectListItem>)) { %>
    <li><%= Html.CheckBox(role.ToString())%> <%= role.ToString() %></li>
    <% } %>
</ul>

P.S. Я новичок в .NET, но мне это нравится! Поправьте меня, если я ошибаюсь, но я думаю, что эта проблема связана с коллекциями и определениями типов?

Кроме того, я знаком с использованием инструмента конфигурации ASP.NET для добавления ролей и пользователей, но я хотел бы создать пользовательский раздел User Admin.

Ответы [ 2 ]

0 голосов
/ 06 апреля 2009

Похоже, мне не нужно использовать класс UserFormViewModel. Морф помог мне. Вот что я делаю:

<ul>            
    <% 
        string[] allroles = Roles.GetAllRoles();
        foreach (string role in allroles) {
    %>
    <li>
        <%= Html.CheckBox(role.ToString(), Roles.IsUserInRole(Model.UserName, role.ToString())) %>
        <%= role.ToString() %>
    </li>                   
    <% } %>

</ul>
0 голосов
/ 03 апреля 2009

Как то так?

<li><%= Html.CheckBox(role.ToString(), 
     Roles.IsUserInRole(Model.User.Identity.LoginName, role.ToString())) %> 
    <%= role.ToString() %>
</li>

Не могу точно вспомнить точный синтаксис ролей в поставщике членства asp.net, но это что-то вроде этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...