C# 在视图中禁用验证

C# 在视图中禁用验证,c#,asp.net-mvc,C#,Asp.net Mvc,所以我有这个模型: public class MyModel { [RegularExpression(@"[^/\\|""<>:?'\*\[\]=%$+,;~#&{}]*", ErrorMessage = @"Illegal characters: / \ | "" ' < > [ ] { } : ; , ~ ? = + * % $ #")] public string Reference{ get; set; } } 奇怪的是,我总是有例外。

所以我有这个模型:

public class MyModel
{
    [RegularExpression(@"[^/\\|""<>:?'\*\[\]=%$+,;~#&{}]*", ErrorMessage = @"Illegal characters: / \ | "" ' < > [ ] { } : ; , ~ ? = + * % $ #")]
    public string Reference{ get; set; }
}
奇怪的是,我总是有例外。即使数据没有任何非法字符

  • 为什么我会犯这个错误
  • 如何在get操作中取消此验证检查,但在用户发布表单时仍保留验证
编辑:
当错误弹出时,我关闭它并将执行设置为
@Html.TextBoxFor
之前的一行。当编译器再次尝试文本框时,也不例外。

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

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

如何在get action上取消此验证检查,但在用户发布表单时仍保留验证?也许删除该属性,检查post-action方法中的值(例如,
Regex.IsMatch()
),如果失败,则添加一个ModelStateError并返回视图?我想这样做,但会丢失客户端验证。Regex中的星号是否应转义?
[RegularExpression(@"[^/\\""\|<>:\?'\*\[\]\=%\$\+,;~#&\{\}]*", 
 ErrorMessage = @"Illegal characters: / \ | "" ' < > [ ] {{ }} : ; , ~ ? = + * % $ #")]