【问题标题】:Steve Sanderson's BeginCollectionItem not working in all cases... potential solution?史蒂夫桑德森的 BeginCollectionItem 在所有情况下都不起作用......潜在的解决方案?
【发布时间】:2011-12-11 23:20:18
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 如果您发布一些代码,我们可以更好地了解您在做什么
  • 您是否费心阅读第二篇文章 - blog.stevensanderson.com/2010/01/28/…??
  • 艾哈迈德...可以和你使用相同的语气...我正在使用 mvc3 和 jquery 不显眼的验证。他的第二个帖子对我的案子没有任何价值。

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


【解决方案1】:

需要考虑的事项:

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

-

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

-

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

【讨论】:

  • @counsellorben...感谢您的回复...我不知道它正在寻找表单上下文。我会在星期一试一试,看看效果如何。谢谢!
  • "parse" 行上面的两行是否有原因??
  • 解析不显眼的验证属性时,将有关属性的数据放入 DOM。为了正确重新解析,最简单的解决方案是从 DOM 中清除数据。
  • 啊……明白了。没有意识到它会阻塞 DOM 中的东西。将不得不调整代码来弥补这一点。我会看看我今天是否可以设置一个测试项目并查看它的实际效果。
  • @counsellorben...老兄!你真是太棒了……干得好。看到我必须在 *.cshtml 文件上实现 FormContext 部分,我有点震惊,我本来希望将它添加到控制器中,但是当我坐在这里思考它时……该逻辑特定于 View ,所以我想我对此很满意。感谢您的帮助...现在@某个点,我会回去更正系统的其余部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
相关资源
最近更新 更多