2011-10-17 39 views
3

我有一個ASP.NET Web應用程序,我的視圖模型有一個雙字段PowerPrice,但是如果用戶沒有輸入前導零,字段的驗證將關閉。驗證會說「請輸入一個數字」。我如何允許用戶輸入「.11」而不是要求「0.11」?這是我的觀點和型號代碼:允許不帶前導零的文本框輸入

<div class="editor-field"> 
    @Html.EditorFor(model => model.PowerPrice) 
    @Html.ValidationMessageFor(model => model.PowerPrice) 
</div> 

public double PowerPrice 
{ 
    get; 
    set; 
} 
+2

所以我討厭在這裏回答我自己的問題,因爲我真的覺得MVC應該照顧這個,但我發現了兩種解決方案:或者寫一個客戶驗證或使用字符串而不是雙重然後做一個TryParse()它在服務器端。我不太喜歡這兩種解決方案中的任何一種,所以我會留下這個問題,看看我能否得到更好的答案。 –

+0

我有同樣的問題。我不明白.25是如何不是一個數字,但是0.25。把逗號放在int中也是一樣的問題。在這種情況下,我也採取了一個措辭。 – PilotBob

+0

這仍然沒有簡單的答案? .25 == 0.25? –

回答

1

您設置一個值,在這種情況下,」 0.11" ,以一個double類型的對象正確類型的不是。它總是會失敗。

你有幾個選擇,我可以想到我的頭頂。

或者,

  • 你可以讓你的代碼然後在客戶端通過客戶端代碼(如JavaScript或JQuery)檢測到那裏有什麼,所以你說你只是擔心點「.12」,然後如果你檢測到這種情況,請添加一個前導零或數字,具體取決於你想要什麼。這將確保它到達服務器的十進制值,並在服務器端不接受解析或更改。
0

我相信這answer here確定實際的罪魁禍首 - jQuery.Validation版本之前1.10有一個破損的驗證正則表達式。根據後面對答案的評論,只需將您的jQuery.Validation升級(例如nuget)到最新版本即可。

在我的情況下,從1.9.0.1升級到1.11.1訣竅。沒有服務器端/模型綁定器/字符串ViewModel根本不需要改變。

相關問題