mvc3にカスタムDateTextBoxControlがあります。コントロールは次のように使用されます。
@Html.DateTextBoxFor(x => x.ActiveParty.PartyDetail.InUSASince,
new { @class = "span-7 data date-picker", @maxlength = 10 })
モデルでは、プロパティInUSASinceの検証属性を追加しています。
[RequiredWhen("NationalityId", new object[] { Nationality_USA },
true, ErrorMessage = "Date Field is Required.")]
public virtual DateTime? InUSASince { get; set; }
控えめなJavaScriptバリデーターを次のように登録しました
$.validator.unobtrusive.adapters.add("requiredwhen", ["dependentproperty",
"expectedvaluefordependentproperty", "reverse"], function (options)
{
var expectedvaluefordependentproperty = null;
var reverse = options.params.reverse;
if (options.params.expectedvaluefordependentproperty.length != 0)
{
expectedvaluefordependentproperty = options. params.
expectedvaluefordependentproperty.split(',');
var prefix = getModelPrefix(options.element.name);
dependentproperty = options.params.dependentproperty,
fullOtherName = appendModelPrefix(dependentproperty, prefix),
element = $(options.form).find(":input[name='" + fullOtherName + "']");
options.rules["jqRequiredwhen"] = { dependentelement: element,
expectedvaluefordependentproperty:
expectedvaluefordependentproperty, reverse: reverse };
if (options.message) {
options.messages["jqRequiredwhen"] = options.message; }
}
});
ページを実行したとき。検証メッセージは表示されません。ソースを表示したとき。コントロールに検証関連の属性がないことがわかります。
誰かが私が欠けているものを知っていますか?
ありがとう。