【发布时间】:2022-04-23 01:58:14
【问题描述】:
我有一个 .Net Core Web 应用程序,我正在尝试让模型验证按我的意愿工作。
剃须刀代码是
<div class="form-group">
<label asp-for="Duration"></label>
<select asp-for="Duration" class="form-control">
<option value="">Pick number of days</option>
<option value="7">7 days</option>
<option value="14">14 days</option>
<option value="21">21 days</option>
<option value="28">28 days</option>
</select>
<div><span asp-validation-for="Duration" class="text-danger"></span></div>
</div>
模型是
[Required(ErrorMessage = "The duration is required")]
[Display(Name = "Length of audit:")]
public int Duration { get; set; }
如果我不选择任何值,下拉菜单将保持在“选择天数”。显示的验证消息是“值 '' 无效。”
除了创建自己的自定义验证器之外,我如何获取代码以生成“需要持续时间”的验证消息
【问题讨论】:
-
你重建你的项目了吗?
-
是的,我有。问题似乎在于不同验证器的工作方式。
-
一种解决方案是使用 进行无选择和 [Range(7,28,ErrorMessage = "The duration is required") 代替注释的 [必需]。我不想选择一个值,但它确实有效。
-
是的,为了避免由于字符串值无法转换为
int而导致该消息,您需要首先提供一个有效的int,0是这里的最佳选择。然后,您的自定义验证可以进行验证并生成您想要的任何消息。