我正在使用会员提供商,并希望使用GetAllUsers
功能显示所有用户及其名字,姓氏等的列表。
我无法理解如何在MVC中实现此功能。
有没有人在MVC中实现过这个,或者有更简单的方法列出我的应用程序中的所有用户?
任何帮助或建议都会非常有用。
控制器
public ActionResult GetUsers()
{
var users = Membership.GetAllUsers();
return View(users);
}
查看模型
public class GetUsers
{
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
[Required]
[DisplayName("User name")]
public string FirstName { get; set; }
}
查看
<%= Html.Encode(item.UserName) %>
错误
传递到字典中的模型项的类型为'System.Web.Security.MembershipUserCollection',但此字典需要类型为'System.Collections.Generic.IEnumerable`1 [Account.Models.GetUsers]'的模型项
答案 0 :(得分:3)
查看强>
Inherits="System.Web.Mvc.ViewPage<MembershipUserCollection>"
<ul>
<%foreach (MembershipUser user in Model){ %>
<li><%=user.UserName %></li>
<% }%>
</ul>
<强>控制器强>
public ActionResult Admin()
{
var users = Membership.GetAllUsers();
return View(users);
}
答案 1 :(得分:2)
你遇到的困难是什么? GetAllUsers方法只返回一组用户,然后您可以手动显示这些用户,或者使用来自Telerik等供应商的网格组件。
类似的东西:
<% foreach(var user in Membership.GetAllUsers()) { %>
<p>Name: <%= user.UserName %></p>
<% } %>
显然,请注意文档中的警告:
使用GetAllUsers时要小心 用户数据库非常大的方法, 由此产生 MembershipUserCollection在你的 ASP.NET页面可能会降低 你的申请表现。
有一个重载可以让你做分页来解决这个问题: - )
答案 2 :(得分:1)
@Jemes,您遇到的问题是您将System.Web.Security.MembershipUserCollection
作为模型传递给视图,并指定视图模型的类型为Account.Models.GetUsers
。将类型更改为System.Web.Security.MembershipUserCollection
。但是,如果您在解决方案中使用默认的成员资格提供程序,则由于MembershipUser类没有FirstName属性,因此您将无法使用First Name。