ich eine dynamische Drop-Down-Liste mit diesem Code erstellen:Rollen-ID nicht existiert, wenn i dynamische Drop-Down-Liste mit
[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();
}
Ausblick:
<div class="form-group">
<label>نقش</label>
<div class="col-md-10">
@Html.DropDownListFor(item => item.UserRoles, ViewBag.Roles as SelectList, "-- Select --")
</div>
</div>
Als ich die Rolle für Register wählen Zeigen Sie mir dieses Fehler:
Benutzer in Tabelle erstellt wird AspNetUsers
aber nicht in AspNetUserRoles
.
Was ist das Problem? /************************************************ ********************************************/
bearbeiten
Modell:
Contoller:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model, HttpPostedFileBase UserPhoto)
{
if (ModelState.IsValid)
{
model.DateRegister = DateTime.Now;
var user = new ApplicationUser
{
UserName = model.UserName,
Name = model.Name,
Family = model.Family,
PhoneNumber = model.PhoneNumber,
Gender = model.Gender,
BirthDay = model.BirthDay,
DateRegister = model.DateRegister,
IsActive = false,
Email = model.Email
};
if (UserPhoto != null)
{
UserPhoto = Request.Files[0];
var ext = System.IO.Path.GetExtension(UserPhoto.FileName);
if (ext == ".jpeg" || ext == ".jpg" || ext == ".png")
{
string filename = model.PhoneNumber + ext;
UserPhoto.SaveAs(Server.MapPath(@"~/Image/" + filename));
user.UserPhoto = filename;
}
}
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
await UserManager.AddToRoleAsync(user.Id,model.UserRoles);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
Ich glaube, Sie SelectListItem statt Select benötigen. –
es gibt alle Rolle in Dropdown-Liste – Kianoush
Ihre Ansicht in stark an Ihre 'ViewModel' Klasse gebunden, während von Controller-Aktion' Register' übergeben Sie nicht 'ViewModel' zu' View' – mmushtaq