在ASP.NET Core 3.1 MVC中,可以通过自定义注册页面来允许用户选择角色。下面是一个示例解决方案:
public enum Roles
{
Admin,
User,
Guest
}
RegisterViewModel类中添加一个名为SelectedRole的属性,用于存储用户选择的角色:public class RegisterViewModel
{
// other properties
public Roles SelectedRole { get; set; }
}
SelectedRole属性:
[HttpPost]
public async Task Register(RegisterViewModel model)
{
// validate and register user
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
// assign role to user
await _userManager.AddToRoleAsync(user, model.SelectedRole.ToString());
// other registration logic
// ...
return RedirectToAction("Index", "Home");
}
// handle registration errors
// ...
}
// re-display registration form with validation errors
// ...
}
在上述代码中,我们使用了_userManager来创建用户并将所选的角色分配给该用户。 _userManager是一个UserManager的实例,TUser是你的应用程序中的自定义用户模型。
通过以上步骤,你可以在ASP.NET Core 3.1 MVC中允许用户在注册时选择他们的角色。请确保为用户角色分配相应的权限和访问控制。