2014-10-27 53 views
0

我對int字段指定了以下驗證。MVC5 StringLength驗證失敗的int

[Required(ErrorMessage = ValidationMessages.ResponseRequired)] 
     [Digits(ErrorMessage = ValidationMessages.DigitsOnly)] 
     [StringLength(6, MinimumLength = 6, ErrorMessage = ValidationMessages.InvalidLength)] 
     public int? Code { get; set; } 

當我取出StringLength然後帖子成功。有了它,我得到500例外:

無法投類型「System.Int32」的對象爲類型「System.String」

這到底是怎麼回事?我需要爲int編寫一個自定義的嗎?在這種情況下,我只是想確保用戶輸入6位數字。

回答

1

字符串長度對於int是不是真的有效,但?

你試圖實現什麼?輸入是否大於99,999?

然後你可以使用:

[Range(100000,int.MaxValue)] 
+0

我們將代碼發送給用戶,它是6位數字。我要的只是檢查他們是否輸入了6位數字。 – 2014-10-28 01:18:21

+0

我已將其更改爲正則表達式[RegularExpression(「^ {6} $」,ErrorMessage = ValidationMessages.InvalidLength)],但現在我的ModelState.IsValid返回爲false。 – 2014-10-28 03:07:05

+0

我必須忽略這一點。如果您得到的整數輸入大於99,999(如上面的代碼所強調的那樣),那麼您至少有6位數字。你總是可以改變它到範圍(100000,999990),以確保完全6位數...... – 2014-10-28 08:13:31

0

您可以使用範圍或正則表達式控制您的數位長度。

Range[0,999999] 
Range[100000,999999] 
[RegularExpression(@"\d{6}")]