0

我在 C# 中有一个使用表单身份验证的 ASP.NET MVC 项目,并且 Active Directory 是成员资格提供程序(用户使用他们现有的 uid/pwd 登录)。但是,我希望由 aspnet_Roles(应用程序创建的默认表)提供角色。在我的 Web.config 中,我有: 使用此节点的默认设置。

我成功地遵循了NerdDinner示例应用程序 PDF 并希望使用我所学到的东西。在我的应用程序中,我使用存储库模式,就像 NerdDinner 一样。在 NerdDinner 中,它展示了如何使用 Helper 方法来填充 DropDownList。我也想做同样的事情,但我想从表格中提取角色并填充复选框,而不是国家和下拉菜单。

在我的 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>

PS 我是 .NET 的新手,但我喜欢它!如果我错了,请纠正我,但我认为这个问题与集合和类型定义有关?

此外,我熟悉使用 ASP.NET 配置工具添加角色和用户,但我想创建一个自定义用户管理部分。

4

2 回答 2

0

像这样的东西?

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

不太记得 asp.net 成员资格提供程序中角色的确切语法,但它是沿着这些线的。

于 2009-04-03T16:20:37.160 回答
0

看起来我不需要使用 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>
于 2009-04-06T13:00:42.357 回答