在我的模型我有一个是通过以下方式标注的某一特定领域:为什么MVC 3验证覆盖我的?
[DataType(System.ComponentModel.DataAnnotations.DataType.Text)]
[RegularExpression("[0-9]{1,10}", ErrorMessage = "The stated Attempt Id is invalid!")]
public long? AttemptId { get; set; }
当我在尝试ID输入不正确的数据它给我的模型状态出现以下错误信息:
The value 'cbcbxcb' is not valid for AttemptId.
我有其他领域有类似的错误消息,但他们的字符串类型而不是长?并在出现无效值的情况下显示正确的错误消息。为什么不是“长”的信息?正在使用?我在页面中使用folowing文字标记显示我的错误。
<%: Html.TValidationSummary() %>
编辑:我曾尝试在模型中更改验证以下内容:
[Required(ErrorMessage="The stated Attempt Id is invalid!", AllowEmptyStrings=true)]
然而,这仍是不正确。首先,我需要让该字段保持空白,当我这样做时,它会给我“所述的尝试标识无效!”。错误信息。其次,当我在字段中输入无效数据时,它将恢复为旧的错误消息。
感谢您的回答。现在诀窍是该特定字段不是真正必需的字段,因此用户应该允许将其保留为空。有没有办法做到你的建议,而不是将其绑定为“必需”? – 2012-04-24 11:05:18
我将验证更改为'[必需(ErrorMessage =“声明的尝试标识无效!”,AllowEmptyStrings = true)]',现在它显示错误消息,如果留空(它不应该)并仍然显示错误错误消息eif无效。 – 2012-04-24 11:26:58
已经编辑过,如果你的参数是非强制性的,提供了一个替代解决方案 – DaveRead 2012-04-24 12:19:52