ASP. NET Core 3.1 MVC Как разрешить пользователю выбирать свою роль при регистрации? - PullRequest
1 голос
/ 23 марта 2020

Я создаю приложение ASP. NET Core 3.1. Я добавил роли «Покупатель» и «Продавец». Как я могу добавить опцию для пользователя, чтобы выбрать один из них при регистрации.

Заранее спасибо.

1 Ответ

1 голос
/ 24 марта 2020

Мне удалось найти решение, которое нуждается в некоторых корректировках, но пока что работа на меня работает. Итак, вот что я сделал:

  1. Нам нужно подготовить файл Register.cs html. Для этого я использовал инструкции, данные пользователем с именем Джон Ра, в качестве ответа на другой вопрос. Это ссылка на то, что он написал { ссылка }. Но для вашего удобства я напишу и здесь шаги, хотя вся заслуга ему.

1.1 Щелкните правой кнопкой мыши по названию вашего проекта -> выберите «Добавить» -> «Новый элемент лесов».

Firtst step to creating scaffolded item

1.2 На вкладке «Добавить новый элемент лесов» выберите «Идентификация» (слева). -> В середине окна нажмите на «Идентичность». -> Нажмите «Добавить». Second step to adding New Scaffolded Item 1.3. На вкладке «Добавить личность» установите флажок «Учетная запись / регистрация». -> В раскрывающемся списке «Класс контекста данных» выберите «ApplicationDbContext ([ProjectName] .Data)». -> Нажмите «Добавить».

Third step to adding New Scaffolded Item

Теперь перейдем к части кодирования. Сначала мы отредактируем файл Register.cs html .cs, расположенный в [Имя проекта] /Areas/Identity/Pages/Account/Register.cshtml

Location of the file

2.1 Сначала я добавил новое свойство в класс RegisterModel, которое возвращает List.

public List<SelectListItem> Roles { get; }

2.2 Чем в конструкторе я создаю Список.

Roles = new List<SelectListItem>
        {
            new SelectListItem {Value = "Seller", Text ="Seller"},
            new SelectListItem {Value = "Buyer", Text = "Buyer"},
        };

2.3 После этого я добавил следующие свойства в класс InputModel, расположенный в RegisterModel

[Required]
[Display(Name = "UserRole")]
public string UserRole { get; set; }

2.4 Последнее, что я здесь сделал, это редактирование метода OnPostAsyn c. В проверке блока кода, если создание пользователя прошло успешно

 if(result.Succeeded)

, я добавил следующую строку:

await _userManager.AddToRoleAsync(user, Input.UserRole);
Последний шаг заключается в редактировании файла Register.cs html, расположенного в [Имя проекта] / Области / Удостоверение / Страницы / Учетная запись

3.1 Прямо под кодом для «ConfirmPassword». "field

<div class="form-group">
            <label asp-for="Input.ConfirmPassword"></label>
            <input asp-for="Input.ConfirmPassword" class="form-control" />
            <span asp-validation-for="Input.ConfirmPassword" class="text-danger"></span>
 </div>  

Я добавил код, который создает раскрывающийся список, используемый пользователем для выбора своей роли

<div class="form-group">
            <select asp-for="Input.UserRole"
                asp-items="@(Model.Roles)">
                <option>Please select a role</option>
            </select>
            <span asp-validation-for="Input.UserRole" class="text-danger"></span>
 </div>        

Я включаю ссылку на весь проект https://github.com/Danail-Dimitrov/ASP.NET-Core-Demo.git, но имейте в виду, что я уже работал над этим проектом, поэтому в нем можно сделать гораздо больше, чем просто позволить пользователю выбрать свою роль при регистрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...