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

MembershipUserビューで直接使用することは、非常に純粋な MVC アプローチではありません、IMO。

IMO は、次のように、コントローラーとビューの間で渡す必要があるフィールドだけを含む特定の ViewModel を作成できます。

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

コントローラーですべてのユーザーをフェッチした後、LINQ や AutoMapper などを使用して、MembershipUsers を UserViewModel オブジェクトに投影し、この列挙をビューに渡すことができます。

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 に答える