【发布时间】:2022-01-26 15:35:48
【问题描述】:
我正在尝试根据 UserRole 组合框在注册表单中显示其他字段。根据角色,我在用户中创建不同的对象。这是我的注册 html:
@page
@model RegisterModel
@{
ViewData["Title"] = "Register";
var roles = (List<IdentityRole>)ViewData["roles"];
Layout = "~/Areas/Identity/Pages/_AuthLayout.cshtml";
}
<h1>@ViewData["Title"]</h1>
<div class="col">
<div class="col-md-4">
<form asp-route-returnUrl="@Model.ReturnUrl" method="post">
<h4>Create a new account.</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Input.Email"></label>
<input asp-for="Input.Email" class="form-control" />
<span asp-validation-for="Input.Email" class="text-danger"></span>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label asp-for="Input.Password"></label>
<input asp-for="Input.Password" class="form-control" />
<span asp-validation-for="Input.Password" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<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>
</div>
<div class="form-group"><!--This is the checkbox based on which I want to add fields-->
<label asp-for="Input.UserRole"></label>
<select asp-for="Input.UserRole" class="form-control" asp-items='new SelectList(roles,"Id","Name")'>
</select>
<span asp-validation-for="Input.UserRole" class="text-danger"></span>
</div>
<button type="submit" class="btn btn-primary">Register</button>
</form>
</div>
</div>
@section Scripts {
<partial name="_ValidationScriptsPartial" />
}
它或多或少是创建新身份时生成的默认登录。这是我在 register.cshtml.cs 中的输入模型:
public class InputModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Das {0} muss minimum {2} und maximum {1} Zeichen lange sein.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm ")]
[Compare("Password", ErrorMessage = "Die Passwörter stimmen nicht überein.")]
public string ConfirmPassword { get; set; }
[Required]
[Display(Name = "Rolle")]
public string UserRole { get; set; }//based on this checkbox
}
如果选择的角色是管理员,我不需要任何额外的字段。如果选择的角色是 a,我还需要名字,这应该是必需的。如果选择的角色是 b,我需要名字和名字,两者都需要。我确实设法毫无问题地制作自己的领域。我正在使用 asp.net core mvc 3.5.1。关于如何做到这一点的任何意见?
【问题讨论】:
-
你应该使用if条件验证属性Refer to this
标签: c# asp.net asp.net-mvc asp.net-core