【问题标题】:MVC3 unobtrusive validation with regex, always fails first time, then works使用正则表达式的 MVC3 不显眼验证,总是第一次失败,然后工作
【发布时间】:2012-03-05 09:29:46
【问题描述】:

我正在尝试对集合中项目的属性使用 DataAnnotations RegularExpression 属性 - Field 对象具有 Formatter 对象的集合,而后者又具有具有 Value 属性的 Attributes 集合。

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

[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 并退出,它会触发验证事件并告诉我事情并没有像我希望的那样进行。如果我回到该字段并输入完全相同的值,它就会起作用。如果我输入字母,它仍然会失败。

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

谢谢!

【问题讨论】:

  • 跟踪到不显眼的验证 js 文件中的行 - “match = new RegExp(params).exec(value);” RegExp.exec 第一次返回 null,之后每次返回一个值。
  • 这很奇怪。我无法重现该问题。您能否提供一个缩小的视图模型、控制器和视图允许复制的示例?

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


【解决方案1】:

这个问题似乎与我工作时的笔记本电脑有关。昨晚我将代码下载到家里的其他几台计算机上,一切都按预期工作。

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

感谢阅读,感谢 Darin 尝试深入挖掘。

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多