【发布时间】:2013-01-08 09:29:08
【问题描述】:
我正在尝试根据输入的 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 类来获取隐藏字段的值,但到目前为止还没有成功。
任何关于我如何做到这一点或验证这些文本框的更好方法的建议将不胜感激。
【问题讨论】:
标签: c# validation asp.net-mvc-4 foolproof-validation