ASP.NET MVC 3.0 部分表单内外存在不显眼的数据验证属性问题

发布于 2024-11-15 10:37:20 字数 1003 浏览 5 评论 0原文

我有条件内容,根据使用 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() 的问题,这是不引人注目的数据验证属性生成的本质吗?

I have from with conditional content, according with conditions using jQuery i am including or excluding this parts from the form elements.

Here is my functions:

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

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

The problem is with insertAfter() it is does not getting copied HTML 5 custom attributes

For example i have an element like that

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

But insertAfter() copying it like that:

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

Is there any way i can say to insertAfter() to copy HTML 5 attributes as well?
My jQuery version is 1.6.1.

UPDATE:

Thanks guys for comments.
Here is the thing, when i am rendering my partials inside the form the inputs getting generated with unobtrusive data attributes, but if i am rendering my partials outside the form, the unobtrusive data attributes initially not getting included in to inputs.

So when i am rendered the partials outside the form they initially does not contain data attributes.
So it is not issue with jQuery insertAfter(), is it the nature of unobtrusive data validation attributes generation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事未完 2024-11-22 10:37:20

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

this.ViewContext.FormContext = new FormContext();

如果您将助手放置在 BeginForm() 之前,那么请务必在助手之后和开始表单之前清除 FormContext。

In order to generate unobtrusive validation, MVC must have a FormContext. When you place an HtmlHelper outside of Html.BeginForm or Ajax.BeginForm, the HtmlHelpers will not have unobtrusive validation attributes, unless you manually instantiate a FormContext. You can manually instantiate a FormContext by inserting the following code before your helpers:

this.ViewContext.FormContext = new FormContext();

If you are placing your helpers before a BeginForm(), then be sure to clear the FormContext after your helpers and before beginning the form.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文