我有3名自定义的下拉列表中为DateTime
模特属性,分别代表日/月/年即设定每个值一个隐藏的输入,用也可以正常工作的自定义模型绑定器ASP.NET MVC获取的DateTime的月/日/年的属性继承属性验证
我也创建了一个RequiredIf
验证属性与客户端验证,并且它工作正常服务器和客户端添加相应的data-val-requiredif
属性到隐藏的输入,其中存储选定的DropDown值。
问题是当我用使用自定义控制的DateTime属性与此RequiredIf
属性。
[RequiredIf(...)]
public DateTime Start { get; set; }
和问题与Html.HiddenFor
生成的每个下拉隐藏的输入(在本示例绑定到Start.Month
):
<input data-val="true" data-val-number="The field Month must be a number." id="Start_Month" name="Start.Month" type="hidden" value="">
的问题是很清楚的,验证属性是在DateTime
属性,不是Month
子属性,因此data-val-requiredif...
验证属性未在该输入上设置。
问题:
是什么力量让Day/Month/Year
继承dataannotation属性验证,从它的DateTime
模型最好的方法?
我不认为有办法做你所问的。使用标准MVC验证无法将3个不同的字段映射到单个数据验证。你应该做的不是使用自定义模型联编程序,而是将每个字段验证为单独的int,然后将它们组合成服务器上的日期(如果一切都通过)。 –
@ErikFunkenbusch你说得对,我认为我推翻了这个并且失明了,你可能是一种更简单的方法。 –