2012-04-12 11 views
1

リストボックスにすべてのASP.NETユーザーが含まれるページを作成しようとしています。すべてのASP.NETユーザーにHtml.Listboxを設定する

しかし、私は、Html.Listboxがユーザーのリストを受け入れるようにしようとして多くの問題を抱えています。私はこれをやって試してみました

<%: Html.ListBox("Membershipusers", Membership.GetAllUsers())%> 

、これに似ている無数の他のアプローチ。ユーザーのリストを作成することができますように思えますが、私はまだ私のリストボックスにそのリストを表示する方法がわからない

public ActionResult getAllMembershipUsers() 
    { 
     MembershipUserCollection membershipusers = new MembershipUserCollection(); 

     membershipusers = Membership.GetAllUsers(); 

     return View(membershipusers); 
    } 

:私はまた、このようになります私のコントローラのメソッドを持っています。

誰かが私をここで助けてくれることを願っています。

答えて

2

ビューモデルの使用はどうですか?このアプローチを試みましたか?

public class UsersViewModel 
{ 
    public IEnumerable<string> SelectedUsers { get; set; } 
    public IEnumerable<SelectListItem> AvailableUsers { get; set; } 
} 

し、このビューモデル移入しますコントローラ:私はあなたが提案したアプローチを使用していたビューモデル

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<UsersViewModel>" %> 
... 
<%= Html.ListBoxFor(x => x.SelectedUsers, Model.AvailableUsers) %> 
+0

にご強く型付けされたビューで

public ActionResult Index() { var users = Membership.GetAllUsers().Cast<MembershipUser>(); var model = new UsersViewModel { AvailableUsers = users.Select(u => new SelectListItem { Value = u.UserName, Text = u.UserName }) }; return View(model); } 

そして最後に。 辞書に渡されたモデルアイテムは、 'System.Collections.Generic.List'1 [SkyLearn.Areas.Users.Models.User]'タイプですが、この辞書にはこのエラーが表示されます。 'SkyLearn.Areas.Users.Models.UsersViewModel'型のモデル項目が必要です。 – AronChan

+0

@AronChan、エラーメッセージはかなり自明です。あなたのビューは 'List 'と強く型付けされ、 'UsersViewModel'を渡しています。だから、あなたのビューモデルを適応させる必要があります。 –

+0

少しダリンを精緻化するように気をつけますか?どのように私のモデル – AronChan

関連する問題