繁体   English   中英

ASP.NET Core 3.1 MVC 如何让用户在注册时选择他的角色?

[英]ASP.NET Core 3.1 MVC How to allow the user to select his role when registering?

我正在创建一个 ASP.NET Core 3.1 应用程序。 我添加了“买方”和“卖方”角色。 如何添加选项供用户在注册时选择其中之一。

先感谢您。

我设法找到了一个需要一些调整的解决方案,但目前对我有用。 所以这就是我所做的:

  1. 我们需要搭建 Register.cshtml 文件。 为此,我使用名为 John Rah 的用户给出的说明作为另一个问题的答案。 这是他写的内容的链接https://stackoverflow.com/a/58004931/9570978 但是为了您的方便,我也会在这里写下这些步骤,尽管所有功劳都归功于他。

1.1 右键单击​​您的项目名称-> 选择“添加”->“新建脚手架项”。

创建脚手架项目的第一步

1.2 在“添加新的脚手架项”选项卡上选择“身份”(在左侧)。 -> 在点击中间点击“身份”。 -> 按“添加”。 添加新脚手架项目的第二步 1.3 在“添加身份”选项卡中,选中“帐户/注册”旁边的框。 -> 从“数据上下文类”下拉列表中选择“ApplicationDbContext ([ProjectName].Data)”。 -> 点击“添加”。

添加新脚手架项的第三步

  1. 现在是编码部分。 首先,我们将编辑位于 [项目名称]/Areas/Identity/Pages/Account/Register.cshtml 的 Register.cshtml.cs

文件的位置

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 我在这里做的最后一件事是编辑 OnPostAsync 方法。 在代码块中检查用户创建是否成功

 if(result.Succeeded)

我添加了以下行:

await _userManager.AddToRoleAsync(user, Input.UserRole);
  1. 最后一步是编辑Register.cshtml文件,位于[项目名称]/Areas/Identity/Pages/Account

3.1 就在“ConfirmPassword”字段的代码下

<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>        

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM