我正在尝试显示所有用户的列表,但我不确定如何使用MVC模型进行此操作。
我可以通过Membership.GetAllUsers()
方法获取所有用户的列表,但是如果我尝试将其传递给ActionResult
的视图,我会被告知模型不可枚举。
答案 0 :(得分:29)
您必须将View设置为接受MembershipUserCollection类型的对象
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MembershipUserCollection>" %>
在你的行动中:
public ActionResult GetUsers()
{
var users = Membership.GetAllUsers();
return View(users);
}
然后你可以在你的视图中写下:
<ul>
<%foreach (MembershipUser user in Model){ %>
<li><%=user.UserName %></li>
<% }%>
</ul>
答案 1 :(得分:3)
在视图页面的顶部,您需要设置视图页面的类型。 IE:
在视图的顶部,在标记的第一行,您会看到如下内容:
Inherits="System.Web.Mvc.ViewPage"
将其更改为:
Inherits="System.Web.Mvc.ViewPage<MembershipUserCollection>"
或者您尝试传递给视图的任何类型。 “Model”对象现在将是MembershipUserCollection类型,您可以安全地迭代它。
答案 2 :(得分:0)
[编辑]具体来说,视图是什么样的(例如,它希望作为模型获得什么,如何解析集合等)。
你能发一些代码吗?我正在做类似的事情,但我没有遇到任何问题。
答案 3 :(得分:0)
听起来你需要让你的视图强烈输入视图。让您的观点来自ViewPage<MembershipUserCollection>
,而不仅仅是ViewPage
。另一种解决方案是在您的视图中将Model转换为MembershipUserCollection:
<% var members = (MembershipUserCollection) ViewData.Model %>
<% foreach (MembershipUser user in members) { %>
<%-- Do Stuff with the user --%>
<% } %>
答案 4 :(得分:0)
尝试使用asp.net应用程序对象
string id = Session.SessionID.ToString();
String[] users = new String[1000];
users = (string[])Application["users"];
int count=0;
for (int d=0;1000 >d ;d++ )
{
if (users == null) { users = new String[1000]; }
count = d;
if (users[d] == null) { break; }
}
users[count] = id;
Application["users"] = users;
string[] usersTable = (string[])Application["users"];
for (int d=0;1000 >d ;d++ )
{
if (usersTable[d] == null) { break; }
Label1.Text += usersTable[d].ToString()+" | ";
添加到应用程序对象代码
Application["users"] = users;
从应用对象中恢复
string[] usersTable = (string[])Application["users"];
这会对你有所帮助