史蒂夫桑德森的BeginCollectionItem并不适用于所有情况......潜在的解决方案?

时间:2011-10-20 16:58:38

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

我正在使用Steve Sanderson的BeginCollectionItem实用程序来渲染要在MVC3中编辑的对象列表,当您从迭代器渲染整个集合时,它非常有用。当我尝试将一个新项添加到集合中时,我的问题就出现了,并返回表示该对象的html。出于某种原因,我的数据注释没有在代码中的html中呈现。

是否有任何可用的修复方法,或者是否有任何不同的方法,无需手动编写验证,我可以做些什么来解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:22)

需要考虑的事项:

  1. 除非您用于创建此附加对象的任何方法中存在FormContext,否则不会呈现数据注释。如果您使用的是局部视图,请在顶部添加以下内容:
  2. -

       if (this.ViewContext.FormContext == null) 
       {
           this.ViewContext.FormContext = new FormContext(); 
       } 
    
    1. 如果您是通过AJAX动态向页面添加项目,那么在添加新项目后,您必须清除DOM中的验证数据,并重新解析所有验证元素,如下所示:
    2. -

         $("form").removeData("validator");
         $("form").removeData("unobtrusiveValidation");
         $.validator.unobtrusive.parse("form");