#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_9C239D4C47FAFC45E921B1820B5C41AF0EB067AE64D4B8640EE82A0D5F0D4504' does not contain a property with the name 'RoleID'.
2. Я думаю, что в таблице AspNetRole содержится два столбца типа Id, Name