我們將數據註釋與jQuery.validate.unobtrusive插件結合用於我們的一個應用程序,並在今天遇到了一個獨特的錯誤。MVC不顯眼驗證錯誤觸發
查看模型屬性
[Required(ErrorMessage = "You must specifiy a point value for the contest entry")]
[Min(5, ErrorMessage = "The point value must be at least 5 points for this contest")]
[DisplayName("Points required for entry:")]
public int RequiredPoints { get; set; }
查看
<li class="reqpoints">@Html.LabelFor(x => x.RequiredPoints) @Html.TextBoxFor(x => x.RequiredPoints)</li>
生成的HTML
<li class="reqpoints">
<label for="RequiredPoints"></label>
<input id="RequiredPoints" class="input-validation-error" type="text" value="10" name="RequiredPoints" data-val-required="You must specifiy a point value for the contest entry" data-val-range-min="5" data-val-range="The point value must be at least 5 points for this contest" data-val-number="The field Points required for entry: must be a number." data-val="true"></input>
</li>
這個偉大的工程,如果進入到文本框的數量是5-9或者如果第一位是5或更大。從10到49,100-499,1000-4999等任何數字都會被拒絕,並顯示錯誤消息,它必須至少有5個點,就好像它正在截斷最後一個數字一樣。這不會回到服務器並返回,它是jQuery驗證部分正在觸發。有沒有人看到一個問題使用Min()
這樣的單個整數值?
我應該注意到,我們使用這個最小值爲100的地方,並且沒有任何問題(我知道)任何大於100的數字被拒絕。
相關版本:
- jQuery的 - 1.8.4
- jQuery.Validation - 1.12.0
- jQuery.validation.unobtrusive - 3.1.2
更新
如果我將Min
屬性更改爲至少有10個,一切都按預期工作。另外,如果我使用Range(5,99999)
數據屬性,那麼所有值似乎也按預期工作。看起來,jQuery 1.8.4和驗證插件的最新版本的組合可能有一個數字最小驗證的問題。
*最後你的意思是任何小於100的數字被拒絕?*不好意思閱讀對不起 – TheNorthWes
@AdmiralAdama - 不,意思是它應該/預計工作。如果用戶輸入99,則拒絕。如果他們輸入101,那麼對於另一個視圖模型中的特定字段(與此無關),它可以正常工作。在我遇到問題的情況下,它會拒絕任何不以5或更大開頭的內容。我提到了最後一個例子,只是爲了說明它在我們的應用程序的其他地方有效,而不是這一個實例? – Tommy
對不起,我誤解了最後一個例子。 您是否嘗試更改號碼?聽起來像jquery不正確地轉換爲整數。 [類似問題](http://stackoverflow.com/questions/15341564/jquery-validation-does-not-validate-numbers-properly) – TheNorthWes