c# - ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?

标签 c# asp.net asp.net-mvc asp.net-core-mvc

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

提前谢谢您。

最佳答案

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

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

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.cshtml.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 之后,我将以下属性添加到位于 RegisterModel 中的 InputModel 类

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

    2.4 我在这里做的最后一件事是编辑 OnPostAsync 方法。在代码块中检查用户创建是否成功

     if(result.Succeeded)
    

    我添加了以下行:

    await _userManager.AddToRoleAsync(user, Input.UserRole);
    
  • 最后一步是编辑 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>        
    

    关于c# - ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60819704/

    相关文章:

    c# - IActionFilter 和 IAuthorizationFilter 的区别

    javascript - Multieple CheckBoxes 根据选中的复选框动态选中取消选中 + MVC3 + jQuery/Javascript

    c# - 在 C# 中使用正则表达式编辑字符串

    c# - 具有保留 IP 的 WCF 工作线程是否在 Azure 上使用不同的出站 IP?

    c# - MS 图表矩形注释宽度以百分比而非像素为单位

    javascript - Jquery:在另一个 div 中获取动态添加的 div 的索引?

    c# - 使用单声道在 pi 上托管 asp.net owin 网页导致主机错误

    c# - XNA 4.0 自定义顶点声明

    javascript - asp.net javascript - 更改更改下拉选择时的标签文本

    c# - 缓存 Asp.Net 不存在 Asp.Net 5