我目前有一群用户坐在会员数据库中,我希望能够在MVC应用程序中创建一个页面,用于撤回所有用户信息并将其显示在页面上,我有创建了下面的解决方案但是我希望能够在网格视图而不是列表中显示数据:
控制器:
public ActionResult Index()
{
var systemUsers = Membership.GetAllUsers();
return View(systemUsers);
}
查看:
<ul>
<%foreach (MembershipUser user in Model){ %>
<li><%=user.UserName %></li>
<% }%>
</ul>
有人可以告诉我如何获取用户数据并将其显示在视图的网格视图中?我以为我可以有一个模型存储数据然后传递给视图,这个模型可以由控制器更新?但我不确定哪种数据类型可用于存储用户数据,然后传递给网格视图?
谢谢: - )
答案 0 :(得分:1)
在您的观看中直接使用MembershipUser
并不是一种非常纯粹的MVC方法,IMO。
IMO你可以创建一个特定的ViewModel,它只包含你需要在控制器和视图之间传递的字段,如下所示:
public class UserViewModel
{
public Guid UserId {get; set;}
public string UserName {get; set;}
// etc
}
在获取控制器中的所有用户之后,您可以将MembershipUsers投影到UserViewModel对象,例如使用LINQ或AutoMapper,然后将此枚举传递给View。
public ActionResult Index()
{
var systemUsers = Membership.GetAllUsers();
var vmUsers = new List<UserViewModel>();
foreach (MembershipUser u in Membership.GetAllUsers())
{
vmUsers.Add(new UserViewModel()
{
UserId = (Guid)u.ProviderUserKey,
UserName = u.UserName,
// etc
});
}
return View(vmUsers);
}
我不确定你的意思是什么?GridView&#39; (这是MVC,而不是WebForms),但MVC WebGrid应该没问题:
@model IEnumerable<MyNamespace.UserViewModel>
@{
var grid = new WebGrid(Model);
}
<div id="grid">
@grid.GetHtml()
</div>
显然,你想要调整外观和感觉。