C# 用所有ASP.NET用户填充Html.Listbox

C# 用所有ASP.NET用户填充Html.Listbox,c#,asp.net,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc 3,我正在尝试创建一个页面,其中列表框将包含我的所有ASP.NET用户 但是,我在尝试让Html.Listbox接受用户列表时遇到了很多问题 我尝试过这样做: <%: Html.ListBox("Membershipusers", Membership.GetAllUsers())%> 它似乎能够创建用户列表,但我仍然不知道如何在我的列表框中显示该列表 希望有人能帮助我。使用视图模型怎么样?你试过这种方法吗 public class UsersViewModel { publi

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

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

我尝试过这样做:

<%: Html.ListBox("Membershipusers", Membership.GetAllUsers())%>
它似乎能够创建用户列表,但我仍然不知道如何在我的列表框中显示该列表


希望有人能帮助我。

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

public class UsersViewModel
{
    public IEnumerable<string> SelectedUsers { get; set; }
    public IEnumerable<SelectListItem> AvailableUsers { get; set; }
}
公共类UsersViewModel
{
公共IEnumerable SelectedUsers{get;set;}
公共IEnumerable可用用户{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);
}
public ActionResult Index()
{
var users=Membership.GetAllUsers().Cast();
var模型=新用户视图模型
{
AvailableUsers=用户。选择(u=>new SelectListItem
{
Value=u.UserName,
Text=u.UserName
})
};
返回视图(模型);
}
最后,在强类型视图中创建视图模型

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<UsersViewModel>" %>
...
<%= Html.ListBoxFor(x => x.SelectedUsers, Model.AvailableUsers) %>

...
x、 所选用户,型号。可用用户)%>

我使用了您建议的方法。它似乎工作正常,只是我遇到了以下错误:传入字典的模型项的类型为“System.Collections.Generic.List`1[SkyLearn.Areas.Users.Models.User]”,但此字典需要类型为“SkyLearn.Areas.Users.Models.UsersViewModel”的模型项。@AronChan,错误消息似乎不言自明。您的视图被强类型化为
列表
,您正在向其传递一个
UsersViewModel
。所以你需要调整你的视图模型。你想详细阐述一下吗?不完全确定我应该如何改变我的想法model@AronChan,如果我不知道您的模型当前的样子,很难详细说明您应该如何更改模型。但是,您可以在视图模型上添加类型为
List
的属性,该属性将包含当前用作模型的数据。Hi。。因为我在做这件事的方式上改变了很多,所以我在stack上创建了一个新的问题,以便让这个主题反映出我真正想要实现的目标。可以在这里找到:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<UsersViewModel>" %>
...
<%= Html.ListBoxFor(x => x.SelectedUsers, Model.AvailableUsers) %>