【发布时间】:2012-01-04 21:15:25
【问题描述】:
当在正则表达式中使用特殊字符时,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中的regex模式没有按照Model的RegularExpression中指定的方式渲染,即使输入有效数据(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="" />
我还是有同样的问题。
【问题讨论】:
-
我们刚刚遇到了一个类似的问题,我们想要一个“ ”在 ErrorMessage 中被吐出..
-
嗨,我是 TweeZz 的同事;] 是的,我们最终修复了它,但修复得相当粗糙。当吐出不显眼的验证属性时,我们 htmlDecoded 正则表达式验证器的所有验证消息,您可以为您的案例做同样的事情。
-
我已经确认 MVC 3 工具更新和 MVC 4 Beta 之间存在差异。我已经打开了一个错误,我们正在调查。
-
因为这个原因,我们现在正在将我们的主要产品回滚到 MVC3(我们进行了大量本地化,所以 á 等是双重编码的客户端对我们来说是一个很大的阻碍)。希望获得连接文章的链接,以便我们可以监控...
-
嗨teahupoo,我们将它作为我们项目中的一个已知问题,就像微软现在正在做的那样。仍在寻找修复。让我们希望 Microsoft 尽快提供修复程序。
标签: asp.net-mvc regex razor data-annotations