У меня возникают проблемы с добавлением пользователей в роли в MVC 5. Когда я запускаю блок кода, я получаю «Ошибка проверки для одного или нескольких объектов. См.« Свойство EntityValidationErrors » для получения более подробной информации. «MVC 5 - Добавление пользователей к ошибке проверки роли
Тогда, когда я проверяю ошибки проверки сущности, они не очень полезны.
{System.Data.Entity.Validation.DbEntityValidationResult} - это то, что я получаю.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult RoleAddToUser(string UserName, string RoleName)
{
using (var context = new ApplicationDbContext())
{
//Gets the user details
ApplicationUser user = context.Users.Where(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
//Add the user to a role, using id ...
this.UserManager.AddToRole(user.Id, RoleName);
ViewBag.ResultMessage = "Role created successfully !";
// prepopulate roles for the view dropdown
var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
return View("ManageUserRoles");
}
}
И это UserManager:
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Я очень разочарован в этот момент, поскольку это первый раз, когда я работаю с ролями в MVC, и до сих пор он не был хорошим опыт.
Я надеюсь, что кто-то здесь поможет мне найти решение моей проблемы.
P.S. Код Im использованием базируется этот учебник: Working with Roles in ASP.NET Identity for MVC
Это мнение:
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<p>
Username : @Html.TextBox("UserName")
Role Name: @Html.DropDownList("RoleName", (IEnumerable<SelectListItem>)ViewBag.Roles, "Select ...")
</p>
<input type="submit" value="Save" />
Это класс пользователя по умолчанию, с дополнительным свойством:
public class ApplicationUser : IdentityUser
{
[Required]
[MaxLength(13)]
[MinLength(13)]
[Key]
public string IDNumber { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
EDIT: Я нашел проблему ... Поскольку EF использует имена, за которыми следует ID, как ключ по умолчанию, мое приложение постоянно путало идентификатор пользователя (который был номером id) с полем Идентификатор. Спасибо за помощь.
что на View? –
Жестокое редактирование и добавление ... – JacoJvV
Где исключение попадает? Я использовал один и тот же учебник и код в одном из моих приложений, и он работает нормально. Таблицы Identity присутствуют в БД? –