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

Posted

技术标签:

【中文标题】ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?【英文标题】:ASP.NET Core 3.1 MVC How to allow the user to select his role when registering? 【发布时间】:2020-07-04 06:41:38 【问题描述】:

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

提前谢谢你。

【问题讨论】:

您能否添加代码以显示您尝试过的内容?这将非常有帮助。谢谢。 【参考方案1】:

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

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

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

1.2 在“Add New Scaffolded Item”选项卡上选择“Identity”(在左侧)。 -> 在点击中间点击“身份”。 -> 按“添加”。 1.3 从“添加身份”选项卡中选中“帐户/注册”旁边的框。 -> 从“数据上下文类”下拉列表中选择“ApplicationDbContext ([ProjectName].Data)”。 -> 点击“添加”。

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

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 在“确认密码”字段的代码下方

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

【讨论】:

以上是关于ASP.NET Core 3.1 MVC 如何让用户在注册时选择自己的角色?的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何保护我的 Web 应用程序(ASP.Net Core 3.1 MVC)?

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?

在 2 个控制器 ASP.NET Core 3.1 MVC 之间传递 ID

asp.net core 3.1 MVC/WebApi JSON 全局配置

使用存储过程时出现 ASP.Net Core 3.1 MVC 错误

ASP.NET Core 3.1 MVC AddOpenIDConnect 与 IdentityServer3