我正在使用實體框架+ SQL Server數據庫,並使用DataAnnotations部分類來驗證數據。對於像Required和Range這樣的東西,這可以正常工作,但我無法使DataType驗證器正常工作。MVC2:使用DataAnnotations來驗證數據類型
這裏是(自定義)註釋的例子:
[DataTypeWholeNumberAttribute(ErrorMessage = "Zip must be a whole number")]
public object Zip{ get; set; }
...和控制器代碼...
[HttpPost]
public ActionResult Edit(NamedInsuredViewModel viewModel)
{
try
{ //breakpoint here (opening squiggly bracket) shows .Zip is already null
if (ModelState.IsValid)
...save, etc...
}
}
而且我知道發生了什麼:郵編中的數據類型數據庫是int,因此默認驗證正在捕獲,並且在我的驗證器可以到達之前應用通用錯誤消息「value [x]對[FieldName]無效」(爲了證明這一點,我還添加了相同的驗證器到一個字符串字段,它工作得很好)。我不知道的是,我怎麼能解決這個問題(不,我不能改變數據庫使用字符串的一切)?
在這篇文章中提供了一些建議(http://forums.asp.net/p/1608322/4162819.aspx#4162819),但到目前爲止沒有任何幫助。
在此先感謝。
PS - 是否真的沒有辦法驗證原始數據類型而不創建自定義屬性?
爲什麼Zip是一個對象?爲什麼它不是一個整數? – jfar 2010-11-10 16:45:35