Asp.net-Mvc

asp.net mvc 4中的DataAnnotations驗證(正則表達式)-剃刀視圖

  • November 23, 2011

在正則表達式中使用特殊字元時,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 .&'-]+)$" 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 .&'-]+)" id="FirstName" maxlength="100" name="FirstName" type="text" value="" />

我仍然有同樣的問題。

2012 年 7 月 9 日更新 - 看起來這在 RTM 中已修復。

  1. 我們已經暗示了^$所以你不需要添加它們。(包含它們似乎不是問題,但您不需要它們)
  2. 這似乎是 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 .&'-]+)"      <-- MVC 4/Beta

看起來我們是雙重編碼。

引用自:https://stackoverflow.com/questions/8244572