角色提供者 - AccountModel

时间:2010-05-01 12:54:12

标签: asp.net-mvc

我将Roles提供程序添加到内置的AccountModel中,但在使用注册视图模型在视图中添加GetAllRoles时遇到一些问题。

从AccountModel查看模型

public class RegisterModel
    {
        UserName, Email Etc....

        [Required]
        [DisplayName("AllRoles")]
        public SelectList AllRoles { get; set; }
    }

已将角色服务添加到AccountModel

public interface IRolesService
{
    SelectList GetAllRoles();
}

    public class RolesService : IRolesService
{
    public SelectList GetAllRoles()
    {
        var AllRoles = new SelectList(Roles.GetAllRoles());
        return AllRoles;
    } 
}

注册视图页面继承RegisterModel

           Form...

            <div class="editor-label">
                <%= Html.LabelFor(m => m.ConfirmPassword) %>
            </div>
            <div class="editor-field">
                <%= Html.PasswordFor(m => m.ConfirmPassword) %>
                <%= Html.ValidationMessageFor(m => m.ConfirmPassword) %>
            </div>

            <%= Html.DropDownListFor(m => m.AllRoles)%>

我不确定如何使用View Model中的所有角色填充DropDown列表。

任何帮助都会非常棒!

1 个答案:

答案 0 :(得分:0)

我认为您需要所选角色的属性和完整的角色列表。角色列表将用于填充下拉列表,所选角色将填充在具有所选值的帖子上。

public class RegisterModel
{
    UserName, Email Etc....

    [Required]
    [DisplayName("Role")]
    public string Role { get; set; }

    [ScaffoldColumn(false)]
    public SelectList AllRoles { get; set; }
}

...
public ActionResult Register()
{
     var roleService = new RoleService();
     var model = new RegisterModel
     {
          AllRoles = roleService.GetAllRoles(),
          // Role = "User" if you want to choose a default
     }

     return View( model );
}


<div class="editor-label">
   <%= Html.LabelFor(m => m.ConfirmPassword) %>
</div>
<div class="editor-field">
   <%= Html.PasswordFor(m => m.ConfirmPassword) %>
   <%= Html.ValidationMessageFor(m => m.ConfirmPassword) %>
</div>

<%= Html.DropDownListFor(m => m.Role, Model.AllRoles, "--select--", null )%>