【发布时间】:2021-11-15 16:28:44
【问题描述】:
我正在使用 ASP.NET Core MVC 开发注册系统。我有一个 Select 字段,提示用户选择他工作的公司(例如 Microsoft、IBM),并根据他的选择,我想根据该选择验证用户输入的电子邮件域。
例如: 如果用户选择 Microsoft,则电子邮件域必须是 @microsoft.com,如果用户选择 IBM,则电子邮件域必须是 @ibm.com。
我认为这不能使用正则表达式来完成,因为我有两个相关字段。很可能需要通过实现自定义验证属性来完成,但我不知道如何从两个字段中捕获两个值并进行比较。
表格代码:
<div class="row">
<div class="col-md-6">
<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>
<div class="col-md-6">
<div class="form-group">
<label asp-for="Input.Company"></label>
<select asp-for="Input.Company" class="form-control">
<option value="">Please Choose a Company</option>
<option value="ibm" email-domain="ibm.com">IBM/option>
<option value="microsoft" email-domain="microsoft.com">Microsoft</option>
<option value="apple" email-domain="apple.com">Apple</option>
</select>
<span asp-validation-for="Input.Company" class="text-danger"></span>
</div>
</div>
</div>
请注意,如果有帮助,我添加了一个自定义 HTML 属性 email-domain。
Register.cshtml:
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required(ErrorMessage = "Please choose which Company you are working for")]
[DataType(DataType.Text)]
[Display(Name = "Company")]
public string Company{ get; set; }
正如我所说,我认为 Regex 对此没有帮助,我认为它需要一个自定义验证属性,但我不知道如何为这个用例实现它。
我还是 ASP.NET 的新手
提前致谢!!
【问题讨论】:
-
你考虑过使用FluentValidator吗?这种类型的验证对于该库来说很简单。
标签: asp.net asp.net-mvc forms asp.net-core razor-pages