用正则表达式进行MVC3不显眼的验证,总是第一次失败,然后工作

时间:2012-02-13 23:34:10

标签: regex asp.net-mvc-3 unobtrusive-validation

我试图使用DataAnnotations正则表达式属性上的集合中的一个项目的属性 - 甲Field对象具有用于格式化对象的集合,这又具有属性的集合与Value属性

在我的属性视图模型类中,我有:

[RegularExpression(@"^\d+$", ErrorMessage = "That didn't do what you hoped it would do")]
public string Value { get; set; }

我认为这是:

@Html.TextBoxFor( x => x.Formatters[fmt].Attributes[att].Value )

并生成此标记:

<input type="text" value=" " name="Formatters[1].Attributes[0].Value" data-val-regex-pattern="^\d+$" data-val-regex="That didn't do what you hoped it would do" data-val="true" >

所有这一切似乎都是正确的,但验证总是第一次失败。如果我在文本框中输入23并标签,它会触发验证事件并告诉我事情并没有像我希望的那样。如果我回到现场并输入完全相同的值,它就可以了。如果我输入字母,它仍然会失败。

任何人都知道我可能做错了什么或者我可以做些什么来强制验证第一次表现?它似乎与某些集合有关,因为如果我将相同的验证属性放在顶级属性上,它就可以正常工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

此问题似乎与我工作中的笔记本电脑隔离。我昨晚把代码下载到家里的几台其他电脑上,一切都按预期工作。

我仍然不确定发生了什么,但我不认为这是社区可以帮助解决的问题 - 除非有人想借给我一把锤子。

感谢阅读并感谢达林试图深入挖掘。