2013-05-10 44 views
3

這些東西是從哪裏來的?我喜歡他們,我想在我的網站的其他地方利用他們。看來他們只當我做的正則表達式驗證模型顯示:MVC 4中的自動工具提示驗證?

[Display(Name = "Residential")] 
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]", ErrorMessage = "Must be a number")] 
public Byte? residentialExperience { get; set; } 

enter image description here

<div class="editor-label row"> 
    @Html.LabelFor(model => model.residentialExperience) 
</div> 
<div class="editor-field row"> 
    @Html.EditorFor(model => model.residentialExperience) 
    @Html.ValidationMessageFor(model => model.residentialExperience) 
</div> 

如何使用這些驗證工具提示其他地方?另外,我怎樣才能關閉它們?

另外:它沒有顯示和我在模型中一樣的信息。它說,「請輸入一個數字」,而我寫了「必須是一個數字」。

+0

有趣的是,同樣的發生在我身上,但有趣的是,MVC的ModelState中驗證了上Int16的領域在我的自定義驗證踢屬性,但在36個字符後,這個HTML驗證也踢了... – Remy 2013-06-28 19:50:51

回答

4

這是因爲您正在輸出數字字段。如果你看看你的HTML,你會看到你有這樣的事情:

<input type="number" ... /> 

通過定義類型爲numbber,瀏覽器知道會發生什麼,它會給你一個通用的消息。這是Html 5規範的一部分。

如果你想覆蓋,你可以做到這一點的默認行爲:

@Html.TextBoxFor(model => model.residentialExperience, new { @type = "text" }) 
+0

HTML5 ...我明白了,所以我怎樣才能關閉它並顯示我的默認MVC錯誤信息?這很酷,但如果我不能在其他地方使用它,那麼它不會與我的應用程序的其餘部分一起使用,並可能會混淆用戶。 – user1477388 2013-05-10 13:40:37

+0

我用一種方法來編輯我的答案,以覆蓋默認行爲 – Kenneth 2013-05-10 13:43:31

+0

這是我發現的一篇短文,但我不認爲我會實現html 5驗證。對於簡單的事情可能會有好處,但在確保您擁有重要領域的有效數據時不會。 [鏈接](http://blog.isotoma.com/2012/03/html5-input-typenumber-and-decimalsfloats-in-chrome/) – Remy 2013-06-28 20:00:17