我正在尝试实现自定义客户端验证,但它不起作用。我基于 Codeproject 上的文章http://www.codeproject.com/Articles/275056/Custom-Client-Side-Validation-in-ASP-NET-MVC3
我也看过这里,但我认为我正在以正确的方式实现它,但我忽略了一些东西。我的目标是验证日期(必需的日期格式,并且不早于表单上的另一个日期)。前两个可以通过数据注释来完成,最后一个我必须通过自定义验证来完成。
我的基类上有一些数据注释(ClassLibrary 在 VB.NET 中):
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
<MetadataType(GetType(CM_CONTRACTVALIDATIONData))>
Partial Public Class CM_CONTRACTACTIVATION
'...
End Class
Public Class CM_CONTRACTVALIDATIONdata
'...
<DataType(DataType.Date)>
<Required()>
Public Property TakeBackDeviceWhen
'..
End Class
在 javascript 文件中,我添加了自定义方法:
//validation
$.validator.addMethod("checkPickupDate", function (value, element) {
return false;
});
$("#form").validate({
rules: {
TakeBackDeviceWhen: {
checkPickupDate: true
}
},
messages: {
TakeBackDeviceWhen: {
checkPickupDate: "Test"
}
}
}
);
我的 chtml 文件如下:
@Html.TextBox("TakeBackDeviceWhen", Model.TakeBackDeviceWhen.HasValue ? Model.TakeBackDeviceWhen.Value.ToShortDateString() : "", new { style = "Width: 200px" })
生成的 HTML 如下:
<input id="TakeBackDeviceWhen" class="hasDatepicker" type="text" value="" style="Width: 200px" name="TakeBackDeviceWhen" data-val-required="The TakeBackDeviceWhen field is required." data-val="true">
似乎我的类型验证和自定义验证都没有实现。
出了什么问题?