1

我正在尝试创建一个列表框将包含我所有的 ASP.NET 用户的页面。

但是,我在尝试使 Html.Listbox 接受用户列表时遇到了很多问题。

我试过这样做:

<%: Html.ListBox("Membershipusers", Membership.GetAllUsers())%>

以及与此类似的无数其他方法。我的控制器上还有一个方法,如下所示:

    public ActionResult getAllMembershipUsers()
    {
        MembershipUserCollection membershipusers = new MembershipUserCollection();

        membershipusers = Membership.GetAllUsers();

        return View(membershipusers);
    }

它似乎能够创建用户列表,但我仍然不知道如何在我的列表框中显示该列表。

希望有人可以在这里帮助我。

4

1 回答 1

2

使用视图模型怎么样?你试过这种方法吗?

public class UsersViewModel
{
    public IEnumerable<string> SelectedUsers { get; set; }
    public IEnumerable<SelectListItem> AvailableUsers { get; set; }
}

然后是一个控制器,它将填充这个视图模型:

public ActionResult Index()
{
    var users = Membership.GetAllUsers().Cast<MembershipUser>();
    var model = new UsersViewModel
    {
        AvailableUsers = users.Select(u => new SelectListItem
        {
            Value = u.UserName,
            Text = u.UserName
        })
    };

    return View(model);
}

最后在视图模型的强类型视图中

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<UsersViewModel>" %>
...
<%= Html.ListBoxFor(x => x.SelectedUsers, Model.AvailableUsers) %>
于 2012-04-12T06:37:42.190 回答