我正在尝试根据输入的 URL 验证两个文本框,这些文本框用于职称和军衔。
通常,对于我创建的大多数路线,仅需要三个 URL 当前需要军衔,而在类似的项目中,我使用已添加到视图模型的 MVC Foolproof Validation 添加了 RequiredIf 注释,在这种情况下我曾尝试使用注释,但因为我正在从域模型项目进行验证,所以万无一失的验证不起作用。
我目前使用以下代码在域模型中部分实现了自定义验证作为处理程序类:
if (paymentDetailsForm.UseRankInsteadOfJobTitle)
{
if (paymentDetailsForm.Rank == null)
{
yield return new ValidationResult(Resources.JobRankRequired);
}
}
本质上,我创建了一个名为 UseRankInsteadOfJobTitle 的布尔值,根据输入的 URL 将其设置为 true 或 false。
将此值设置为 true 或 false 我在控制器中使用了此代码:
if ((programme.Code == "AMAC") || (programme.Code == "AMACD") || (programme.Code == "AMACR"))
{
ViewData["UseRankInsteadOfJobTitle"] = true;
}
else
{
ViewData["UseRankInsteadOfJobTitle"] = false;
}
然后在视图上创建了一个隐藏字段:
@Html.Hidden("UseRankInsteadOfJobTitle", @ViewData["UseRankInsteadOfJobTitle"])
然后生成以下 HTML:
对于错误值
<input data-val="true" data-val-required="The Boolean field is required." id="UseRankInsteadOfJobTitle" name="UseRankInsteadOfJobTitle" type="hidden" value="False" />
对于真实值
<input data-val="true" data-val-required="The Boolean field is required." id="UseRankInsteadOfJobTitle" name="UseRankInsteadOfJobTitle" type="hidden" value="True" />
目前没有显示职位或军衔的验证消息,我需要一种方法来确定 USERankInsteadOfJobTitle 的值是真还是假。
我曾尝试使用 formCollection 类来获取隐藏字段的值,但到目前为止这还没有奏效。
任何有关如何执行此操作或验证这些文本框的更好方法的建议将不胜感激。