MVC 4、Entity Framework、およびSimpleメンバーシップの使用* NEWBALERT*スキャフォールディングとCRUDの使用を開始したばかりです。
このシナリオでは、ユーザーは1つのロール(DBのwebpages_UsersInRolesテーブル)のみを持つことができます。userProfileドメインクラスがありますが、viewModelを介して更新しています。
私の目標は、考えられるすべての役割を示す選択リストをビューに作成することです。ビューが読み込まれると、このユーザーが持つ役割は、リストで最初に選択されたアイテム(選択された選択された属性)になります
モデルやコントローラーから選択リストを作成したことは一度もないので、気楽に行ってください。
これまでのところ、私は次のものを持っています:
public class EditAdminModelVM
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public IEnumerable<string> UserInRole { get; set; }
//** I believe the function that returns the list of roles
a user is in is of type IEnumerable - though I could be wrong. **
[HiddenInput]
public int UserId { get; set; }
}
次に、私のコントローラーには次のものがあります。
public ActionResult EditAdmin(int id = 0)
{
myDB db = new myDB();
var viewModel = new EditAdminModelVM();
var UserRoles = Roles.GetAllRoles();
SelectList UserRolesList = new SelectList(UserRoles);
viewModel = db.UserProfiles
.Where(x => x.UserId == id)
.Select(x => new EditAdminModelVM
{
FirstName = x.FirstName,
LastName = x.LastName,
Email = x.Email,
UserName = x.UserName,
UserId = x.UserId,
UserInRoles = Roles.GetRolesForUser(x.UserName)
}).FirstOrDefault();
ViewBag.UserRolesList = UserRolesList;
return View(viewModel);
}
ここでの問題は、次の行に警告が表示されることです。Roles.GetRolesForUser(x.UserName)は、型文字列をSystems.Collections.Generic.Listに暗黙的に変換できないことを示しています。ModelプロパティをList<>タイプに変更しようとしましたが、同じエラーが発生します。
どんな助けでもいただければ幸いです!