Несколько наборов объектов для каждого типа не поддерживаются при создании выпадающего списка

#c# #asp.net-mvc #asp.net-identity-2

#c# #asp.net-mvc #asp.net-identity-2

Вопрос:

когда я создаю выпадающий список в таблице идентификаторов AspNetRole с помощью этого кода

IdentityConfig.cs

 public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore)
        : base(roleStore)
    {
    }

    public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
    {
        return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
    }
}
  

Startup.Auth.cs:

 app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
  

.

 .private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
    get
    {
        return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
    }
    private set
    {
        _roleManager = value;
    }
}
  

контроллер :

         [AllowAnonymous]
    public ActionResult Register()
    {
        ViewBag.name = new SelectList(db.Roles, "RoleID", "RoleName");

        return View();
    }
  

Вид :

 <div class="form-group">
    <label>نقش</label>
    <div class="col-md-10">
      @Html.DropDownList("name", null, htmlAttributes: new { @class = "form-control" })
    </div>
</div>
  

это показывает мне эту ошибку :

введите описание изображения здесь

Как я могу это решить?

/************************************************************************************************/

Комментарии:

1. покажите мне эту ошибку : DataBinding: 'System.Data.Entity.DynamicProxies.IdentityRole_9C239D4C47FAFC45E921B1820B5C41AF0EB067AE64D4B8640EE82A0D5F0D4504' does not contain a property with the name 'RoleID'.

Ответ №1:

Контроллер

 [AllowAnonymous]
public ActionResult Register() {
    ViewBag.Roles = new SelectList(db.Roles.ToList(), "Id", "Name");

    return View();
}
  

или

 [AllowAnonymous]
public ActionResult Register() {
    var roles = db.Roles.Select(r => new { RoleID = r.Id, RoleName = r.Name}).ToList();
    ViewBag.Roles = new SelectList(roles, "RoleID", "RoleName");

    return View();
}
  

Вид :

 <div class="form-group">
    <label>نقش</label>
    <div class="col-md-10">
      @Html.DropDownList("SelectedRole", (IEnumerable<SelectListItem>)ViewBag.Roles, htmlAttributes: new { @class = "form-control" })
    </div>
</div>
  

Комментарии:

1. ты мой herrrrrrrrrrrrrrrrrrrrrro . спасибо снова :))))

Ответ №2:

попробуйте с этим кодом, изменения

 ViewBag.name = new SelectList(db.Roles.ToList(), "RoleID", "RoleName");
  

и ваш выпадающий список

 @Html.DropDownList("name", (IEnumerable<SelectListItem>)ViewBag.name, htmlAttributes: new { @class = "form-control" })
  

Комментарии:

1. покажите мне эту ошибку : DataBinding: 'System.Data.Entity.DynamicProxies.IdentityRole_9C239D4C47FA‌​FC45E921B1820B5C41AF‌​0EB067AE64D4B8640EE8‌​2A0D5F0D4504' does not contain a property with the name 'RoleID'.

2. Я думаю, что в таблице AspNetRole содержится два столбца типа Id, Name