在视图中禁用验证

时间:2014-07-31 12:07:24

标签: c# asp.net-mvc

所以我有这个模型:

public class MyModel
{
    [RegularExpression(@"[^/\\|""<>:?'\*\[\]=%$+,;~#&{}]*", ErrorMessage = @"Illegal characters: / \ | "" ' < > [ ] { } : ; , ~ ? = + * % $ #")]
    public string Reference{ get; set; }
}

由于业务需求,无效字符列表需要扩展。问题是数据库中已经存在Reference个包含额外非法字符的内容。现在,当呈现视图时,它会在@Html.TextBoxFor() - 行中断(由RegexAttribute触发的FormatException)。

using (Html.FormGroupFor(x => x.DocReference))
{
    @Html.LabelFor(x => x.Reference)
    @Html.TextBoxFor(x => x.Reference)
}

奇怪的是,我总是得到一个例外。即使数据没有任何非法字符。

  • 为什么我收到此错误?
  • 我如何摆脱对GET-action的验证检查,但在用户发布表单时仍然保留验证?

修改 当错误弹出时。我关闭它并将执行设置为@Html.TextBoxFor之前的一行。当编译器再次尝试TextBox时,没有例外。

1 个答案:

答案 0 :(得分:0)

显然错误不是因为错误的正则表达或巫术。在文字字符串中编写花括号时,必须将它们转义。下面是固定正则表达式+固定错误消息。

[RegularExpression(@"[^/\\""\|<>:\?'\*\[\]\=%\$\+,;~#&\{\}]*", 
 ErrorMessage = @"Illegal characters: / \ | "" ' < > [ ] {{ }} : ; , ~ ? = + * % $ #")]