Validation ASP.NET MVC 3.0部分表单内部和外部带有不引人注目的数据验证属性问题

Validation ASP.NET MVC 3.0部分表单内部和外部带有不引人注目的数据验证属性问题,validation,asp.net-mvc-3,jquery-selectors,unobtrusive-validation,Validation,Asp.net Mvc 3,Jquery Selectors,Unobtrusive Validation,我有条件内容的from,根据使用jQuery的条件,我在表单元素中包括或排除这些部分 以下是我的职能: function MoveInsideForm(id) { $("#" + id).insertAfter("#myForm") } function MoveOutsideForm() { $("#myPartial1").insertAfter("#element-outside-from"); $("#myPartial2").inser

我有条件内容的from,根据使用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()
也复制HTML5属性? 我的jQuery版本是1.6.1

更新:

谢谢大家的评论。 问题是,当我在表单内部呈现我的部分时,输入会使用不引人注目的数据属性生成,但如果我在表单外部呈现我的部分,则不引人注目的数据属性最初不会包含在输入中

因此,当我呈现表单外部的部分时,它们最初不包含数据属性。
因此,jQuery
insertAfter()
没有问题,这是非侵入性数据验证属性生成的本质吗?

为了生成非侵入性验证,MVC必须具有
FormContext
。当您将HtmlHelper放置在
Html.BeginForm
Ajax.BeginForm
之外时,除非手动实例化FormContext,否则HtmlHelper将不会具有不引人注目的验证属性。通过在助手之前插入以下代码,可以手动实例化FormContext:

this.ViewContext.FormContext = new FormContext();

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

我原型化了一些代码,它似乎保留了特殊属性。检查我的代码,如果我缺少什么,请告诉我。(这是在JQuery 1.6中)@Katsuke要复制数据属性,最好使用data()方法,但我只是想知道如何使用insertAfter().Vasya移动包括数据属性在内的所有内容。我刚刚在这个fiddle中测试了代码,它确实复制了每个属性,包括自定义属性(我在IE9中测试),我通过PartialView动态加载表单字段。在部分视图中使用上述代码是否有任何负面影响?@Nick Olsen,没有负面影响,前提是您首先测试
FormContext
是否存在,例如
if(this.ViewContext.FormContext==null){…}
@consullerBen:回答得好。。。今天我为这个问题发疯了。
this.ViewContext.FormContext = new FormContext();