Asp.net-Mvc
asp.net mvc 4中的DataAnnotations驗證(正則表達式)-剃刀視圖
在正則表達式中使用特殊字元時,DataAnnotations 驗證器在 asp.net mvc 4 razor 視圖中不起作用。
模型:
[StringLength(100)] [Display(Description = "First Name")] [RegularExpression("^([a-zA-Z0-9 .&'-]+)$", ErrorMessage = "Invalid First Name")] public string FirstName { get; set; }剃刀視圖:
@Html.TextBoxFor(model => Model.FirstName, new { }) @Html.ValidationMessageFor(model => Model.FirstName)不顯眼的驗證呈現為:
<input type="text" value="" tabindex="1" style="height:auto;" name="FirstName" maxlength="100" id="FirstName" data-val-regex-pattern="^([a-zA-Z0-9 .&amp;&#39;-]+)$" data-val-regex="Invalid First Name" data-val-length-max="100" data-val-length="The field FirstName must be a string with a maximum length of 100." data-val="true" class="textfield ui-input-text ui-body-d ui-corner-all ui-shadow-inset valid">上述 html 中的正則表達式模式未按照模型的正則表達式中指定的方式呈現,即使輸入有效數據 (
Sam's) 也會導致錯誤。我該如何處理?
- 更新 -
我已經按照@Rick 的建議更新了程式碼
[StringLength(100)] [Display(Description = "First Name")] [RegularExpression("([a-zA-Z0-9 .&'-]+)", ErrorMessage = "Enter only alphabets and numbers of First Name")] public string FirstName { get; set; }查看原始碼顯示以下內容:
<input data-val="true" data-val-length="The field FirstName must be a string with a maximum length of 100." data-val-length-max="100" data-val-regex="Enter only alphabets and numbers of First Name" data-val-regex-pattern="([a-zA-Z0-9 .&amp;&#39;-]+)" id="FirstName" maxlength="100" name="FirstName" type="text" value="" />我仍然有同樣的問題。
2012 年 7 月 9 日更新 - 看起來這在 RTM 中已修復。
- 我們已經暗示了
^,$所以你不需要添加它們。(包含它們似乎不是問題,但您不需要它們)- 這似乎是 ASP.NET MVC 4/Preview/Beta 中的一個錯誤。我開了一個bug
查看原始碼顯示如下:
data-val-regex-pattern="([a-zA-Z0-9 .&'-]+)" <-- MVC 3 data-val-regex-pattern="([a-zA-Z0-9 .&amp;&#39;-]+)" <-- MVC 4/Beta看起來我們是雙重編碼。