4

我有条件内容,根据使用 jQuery 的条件,我在表单元素中包含或排除这部分。

这是我的功能:

function MoveInsideForm(id) {
       $("#" + id).insertAfter("#myForm")
   }

function MoveOutsideForm() {
       $("#myPartial1").insertAfter("#element-outside-from");
       $("#myPartial2").insertAfter("##element-outside-from");
   }

问题在于insertAfter()它没有复制 HTML 5 自定义属性

例如我有一个这样的元素

<input data-val="true" data-val-required="*" id="MyInput" name="MyInput" type="text" value="" class="input-validation-error"/>

但是insertAfter()像这样复制它:

<input id="MyInput" name="MyInput" type="text" value=""/>

我有什么办法可以insertAfter()复制 HTML 5 属性吗?我的 jQuery 版本是 1.6.1。

更新:

谢谢大家的评论。事情是这样的,当我在表单内渲染我的部分时,会使用不显眼的数据属性生成输入,但是如果我在表单之外渲染我的部分,那么不显眼的数据属性最初不会包含在输入中。

因此,当我将部分呈现在表单之外时,它们最初不包含数据属性。所以这不是 jQuery 的问题,它是不insertAfter()显眼的数据验证属性生成的本质吗?

4

1 回答 1

6

为了生成不显眼的验证,MVC 必须有一个FormContext. 当您将 HtmlHelper 放在Html.BeginFormor之外时Ajax.BeginForm,HtmlHelper 将不会具有不显眼的验证属性,除非您手动实例化 FormContext。您可以通过在助手之前插入以下代码来手动实例化 FormContext:

this.ViewContext.FormContext = new FormContext();

如果您将助手放在 BeginForm() 之前,请确保在助手之后和开始表单之前清除 FormContext。

于 2011-06-16T17:10:12.380 回答