如何使用强类型枚举的jQueryvalidation插件?

我使用强类型视图列出对象的枚举,如下所示:

@model IEnumerable  @Html.EditorForModel() 

假设Foo有一个简单的数字属性,我想在客户端validation:

 public class Foo { [Required] public int Bar { get; set; } } 

现在,此对象的编辑器模板如下所示:

 @model Foo  @Html.TextBoxFor(m => m.Bar)  

除了默认模型绑定器生成类似[0].Bar名称之外,这种方法[0].Bar 。 但是, []是jQuery validate插件的无效字符,因此每当它尝试validation我的输入时,我总是收到以下错误:

语法错误,无法识别的表达式:label [for ='[0] .Bar’],label [for ='[0] .Bar’] *,#[0] .Bar

有没有办法让插件工作,同时保持我的视图绑定到模型?

更新 :我正在使用jQuery Validate和Microsoft的Unobstrusive Validation库(是的,默认的ASP.NET MVC设置),所以我根本没有直接编写任何validation代码,只是感兴趣!

对于jQuery validate插件,[和]字符并不严格无效。 这只是一个草率的编码,没有考虑在名称/ ID中拥有这些字符的可能性。

甚至有一个GitHub问题处理ASP.NET MVC输入数组exception 。

我做的是我从问题中获取代码(它本身有一个小问题)并在我的JavaScript初始化代码中添加了这个hack:

 $.validator.prototype.idOrName = function(element) { return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name) .replace("[", "\\[") .replace("]", "\\]"); } 

这可能不是最好的或最好的解决方案,但它适用于我。 至少在jQuery中修复它。

不需要使用它,因为它与1.13.1一起使用(请参阅上面的问题以供讨论)。 请注意,虽然我没有检查过自己,但ASP.NET MVC仍然可能与1.13.0捆绑在一起