次のコードを使用してドロップダウンリストを設定する必要があります。私は設定することによって、ある状況では、このコードを使用する(と予想されるように私は、すべてのユーザーのリストを取得):SelectListItemは、Roles.GetUsers.InRole( "MyRole")を使用しているときにデータが移入されませんが、Membership.GetAllUsers()を使用すると移入します。
var users = Membership.GetAllUsers();
が、私は
var users = Roles.GetUsersInRole("MyRole");
を使用している場合、私のドロップダウンは、すべてのユーザーに移入されません。 (私は記載された役割のユーザーを持っていると確信しています)。
"MemberShipUser"とは別のタイプを使用するようにコントローラを変更する必要はありますか?
ユーザーリストの代わりに役割を使用しているため、状況に全く異なる方法で対応する必要がありますか?ここで
は私のコードです -
コントローラー:
var users = Roles.GetUsersInRole("MyRole");
var model = new CreateStudentViewModel
{
Users = users.OfType<MembershipUser>().Select(x => new SelectListItem
{
Value = x.UserName,
Text = x.UserName,
})
};
のViewModel:
public class MyViewModel
{
[Display(Name = "selected user")]
public string SelectedUser { get; set; }
public IEnumerable<SelectListItem> Users { get; set; }
}
ビュー:
<div class="editor-label">
@Html.LabelFor(model => model.SelectedUser)
</div>
<div class="editor-field">
@Html.LabelFor(x => x.SelectedUser)
@Html.DropDownListFor(x => x.SelectedUser, Model.Users)
</div>
私は状況に近づいています参照してください。あなたのコントローラに
間違って - この投稿http://stackoverflow.com/a/9157588/1026898 "返された各ユーザー名をMembershipUserにマップする場合は、返された値ごとにMembership.GetUser(string username)メソッドを使用できます。 - しかし、私はそれからリストを得る方法を正確には分かっていません - 私はどのように1人のユーザを得るか知っていますが、リストは知りません。 – Ecnalyr