我有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你說得對,我認爲我推翻了這個並且失明瞭,你可能是一種更簡單的方法。 –