Je crée une liste déroulante dynamique avec ce code:ID de rôle n'existe pas quand je l'aide liste déroulante dynamique
[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();
}
Vue:
<div class="form-group">
<label>نقش</label>
<div class="col-md-10">
@Html.DropDownListFor(item => item.UserRoles, ViewBag.Roles as SelectList, "-- Select --")
</div>
</div>
Lorsque je sélectionne le rôle pour ENREGISTRER afficher ce erreur:
utilisateur est créé dans le tableau AspNetUsers
mais pas au AspNetUserRoles
.
Quel est le problème? /******************************************* *****************************************/
Modifier
Modèle:
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);
}
Je pense que vous avez besoin SelectListItem au lieu de SelectList. –
il retourne tous les rôles dans la liste déroulante – Kianoush
Votre vue dans fortement lié à votre classe 'ViewModel' tandis que de l'action Contrôleur' Register' vous ne passez pas votre 'ViewModel' à' View' – mmushtaq