ASP.NET MVC 3.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了生成不显眼的验证,MVC 必须有一个
FormContext
。当您将 HtmlHelper 放置在Html.BeginForm
或Ajax.BeginForm
之外时,HtmlHelpers 将不会具有不显眼的验证属性,除非您手动实例化 FormContext。您可以通过在助手之前插入以下代码来手动实例化 FormContext:如果您将助手放置在 BeginForm() 之前,那么请务必在助手之后和开始表单之前清除 FormContext。
In order to generate unobtrusive validation, MVC must have a
FormContext
. When you place an HtmlHelper outside ofHtml.BeginForm
orAjax.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:If you are placing your helpers before a BeginForm(), then be sure to clear the FormContext after your helpers and before beginning the form.