2014-09-28 3 views
1

Я использую MVC 5 с идентификатором 2. Я создал две роли, одну для администраторов и одну для поставщиков. Проблема заключается в том, что форма регистрации должна использовать свойства, определенные в роли поставщика. Я не могу понять, как заставить MVC использовать эти свойства роли для целей регистрации. Я попытался назначить соответствующую роль для приложения, но, назначив ему роль, она все еще говорит, что ее не существует. Есть ли способ сделать это, или мне придется разбить это на два экрана регистра (т. Е. Один, чтобы обрабатывать начальное создание пользователя, а второй - для выполнения конкретной роли)?ASP MVC 5 Идентификация 2: Невозможно определить, как ссылаться Пользовательские свойства роли для пользователя

 public async Task<ActionResult> Register(RegisterVendorViewModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       var user = new ApplicationUser 
       { 
        UserName = model.Email, 
        Email = model.Email, 
        FirstName = model.FirstName, 
        LastName = model.LastName, 
        PhoneNumber = model.PhoneNumber, 
        CompanyName = model.CompanyName, 
        Address = model.Address, 
        City = model.City, 
        State = model.State, 
        PostalCode = model.PostalCode 
       }; 
       var result = await UserManager.CreateAsync(user, model.Password); 
       if (result.Succeeded) 

UPDATE: Я разделил точку зрения, первый взгляд сделку исключительно с созданием приложений пользователя, в то время как второй вид, где я добавить поля VendorUser ролей для пользователя, созданного в первом представлении. Теперь это ошибки и говорит, что я не могу добавить атрибуты VendorUserRole в IdentityUserRole.

Код ошибки «Ошибка 2 Аргумент 1: не удается преобразовать из„Project1.Models.VendorUserRole“до" Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole»

я явно не обновлять или отменять что-то в моих ролях реализация. Кто-нибудь знает, где это можно исправить? Я думал, что я изменил их все, чтобы нормально работать.

 // POST: /Account/RegisterP2 
     [HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public async Task<ActionResult> RegisterP2([Bind(Include = "Id")]RegisterPart2ViewModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       var vendorUser = new VendorUserRole() 
       { 
        Id = model.Id, 
        CompanyName = model.CompanyName, 
        Title = model.Title, 
        Address = model.Address, 
        City = model.City, 
        State = model.State, 
        PostalCode = model.PostalCode, 
       }; 

       var user = await UserManager.FindByIdAsync(vendorUser.Id); 
       **user.Roles.Add(vendorUser);** 

ОБНОВЛЕНИЕ: Мне явно нужно больше понимания Идентичности, прежде чем я попробую больше кода; может кто-нибудь сказать мне, если моя основная предпосылка верна ?:

Мне нужны два разных пользователя: поставщики и администраторы, которые имеют разные свойства, у меня есть один пользовательский класс ApplicationUser, который поставляется с Identity 2. Я создал роли с различными свойствами для каждого, и теперь я застрял. Я не могу понять, как ссылаться на разные роли в основной класс пользователя. Согласно моим исследованиям в .NET, пользователь - это просто сущность, которая входит в систему, выходит и т. Д. Предполагаемые роли должны позволять вам присоединять роли к экземпляру пользователя, тем самым создавая необходимую роль.

Я надеюсь, что я не сделал часы кодирования на основе неисправного помещения ...

+0

Если кто-нибудь знает, где я могу найти ресурсы, связанные с добавлением атрибутов к пользователю с идентификатором 2, используя роли; Я был бы признателен за помощь. – Rasen244

ответ

0

Это происходит потому, что до регистрации пользователя, его пользователь еще не создан, поэтому его пока еще не существует пользователь может не иметь роль. У вас должно быть два разных вида, используя те же модели и контроллеры, но вы должны знать, что пользователь еще не существует.

+0

Я знаю, что это решение, мне просто интересно, знал ли кто-нибудь о том, как это сделать на одной странице регистрации. – Rasen244

+0

Возможно, но беспорядочно. Я не рекомендую это. –

+0

Любая идея, что я пропустил, вызывает новую ошибку? – Rasen244