2

我目前有一群用户坐在会员数据库中,我希望能够在 MVC 应用程序中创建一个页面,该页面旨在拉回所有用户信息并将其显示在页面上,我已经创建了解决方案下面但是我希望能够在网格视图而不是列表中显示数据:

控制器:

public ActionResult Index()
        {
            var systemUsers = Membership.GetAllUsers();
            return View(systemUsers);
        }

看法:

 <ul>
        <%foreach (MembershipUser user in Model){ %>

        <li><%=user.UserName %></li>

        <% }%>
   </ul>

有人可以告诉我如何获取用户数据并将其显示在视图上的网格视图中吗?我在想我可以有一个模型来存储数据,然后将其传递给视图,并且该模型可以由控制器更新?但我不确定哪种数据类型可用于存储用户数据然后传递给网格视图?

谢谢 :-)

4

1 回答 1

1

IMO,直接在您的视图中使用MembershipUser不是一种非常纯粹的 MVC 方法。

IMO 您可以创建一个特定的 ViewModel,其中只包含您需要在控制器和视图之间传递的字段,如下所示:

public class UserViewModel
{
    public Guid UserId {get; set;}
    public string UserName {get; set;}
    // etc
}

在您的控制器中获取所有用户之后,您可以将 MembershipUsers 投射到您的 UserViewModel 对象中,例如使用 LINQ 或 AutoMapper,然后将此枚举传递给视图。

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”是什么意思(这是 MVC,而不是 WebForms),但MVC WebGrid应该可以:

@model IEnumerable<MyNamespace.UserViewModel>
@{
    var grid = new WebGrid(Model);
}

<div id="grid">
    @grid.GetHtml()
</div>

显然,您需要稍微调整一下外观。

于 2012-08-16T15:03:24.807 回答