我試圖實現自定義客戶端驗證,但它不工作。我正在基於Codeproject上的文章http://www.codeproject.com/Articles/275056/Custom-Client-Side-Validation-in-ASP-NET-MVC3ASP.NET MVC 3 - 自定義客戶端驗證不工作
我也看過這裏,但我認爲我正確地實施它,但我忽略了一些東西。 我的目標是驗證一個日期(必需的,日期格式,不要早於表單上的另一個日期)。前兩個可以通過數據註釋來完成,最後一個我需要處理自定義驗證。
我有我的基類的一些dataannotations(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">
看來,我的類型驗證和我的自定義驗證都沒有實現。
什麼問題?
我一直在尋找這個問題。我最終做了一個測試MVC項目。但它也不起作用。檢查了兩次文章,我想我和他們一直在說的一樣。在這個項目中我沒有日期檢查:http://www.4shared.com/zip/e9eb0Dza/TestMVC.html?refurl=d1url – JurgenStillaert
好的。發現DataType不執行驗證。 Pro ASP。.NET MVC3框架頁面605:「■提示DataType屬性不能用於驗證用戶輸入 - 僅爲使用模板化助手提供值 提供提示(在第16章中描述)。因此,例如,不要期望DataType(DataType.EmailAddress)屬性強制執行特定的格式。「 – JurgenStillaert
當前狀態:(1)不要使用EditorFor,(2)將data_val,data_val_required,data_val_date作爲htmlattribute添加到字段中,(3)DataType註釋不會強制類型驗證。仍堅持添加自定義jQuery驗證器。見http://www.4shared.com/zip/f9G2eNwu/TestMVC2.html – JurgenStillaert