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

Ric*_*d B 7 asp.net jquery unobtrusive-validation asp.net-mvc-3

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

有没有可用的修复程序,或者是否有任何不同的东西,sans不得不亲自编写验证,我可以做什么来解决这个问题?

谢谢.

cou*_*ben 22

需要考虑的事项:

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

-

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

-

   $("form").removeData("validator");
   $("form").removeData("unobtrusiveValidation");
   $.validator.unobtrusive.parse("form");
Run Code Online (Sandbox Code Playgroud)

  • @counsellorben ......伙计!你真是太棒了......干得好.我有点震惊地看到我必须在*.cshtml文件上实现FormContext片段,我本来希望将它添加到控制器中,但是当我坐在这里思考它时...该逻辑特定于View所以我想我很高兴.感谢您的帮助...现在@某点,我会回去纠正系统的其余部分. (2认同)