麻烦不引人注目的验证与MVC 3 jQuery的阿贾克斯后工作 [英] Trouble getting unobtrusive validation working with mvc 3 on jquery ajax post

查看:167
本文介绍了麻烦不引人注目的验证与MVC 3 jQuery的阿贾克斯后工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经有很多的麻烦验证工作在MVC3。它正常工作时,我只需要直接加载页面,但是当我使用jQuery AJAX POST不验证:

I have having a lot of trouble getting validation to work on MVC3. It works fine when I just load the page directly, but it does not validate when I use jquery AJAX POST:

这种形式是使用 $('#模式 - 对话)。载荷('/ DartsMVC /餐厅/编辑/ 13'),这是呈现的HTML装

This form is loaded using $('#modal-dialog').load('/DartsMVC/Restaurant/Edit/13'), This is the rendered HTML:

<form action="/DartsMVC/Restaurant/Edit/13" method="post">
    <fieldset>
        <legend>Restaurant</legend>

        <input data-val="true" data-val-number="The field RestaurantID must be a number." data-val-required="The RestaurantID field is required." id="RestaurantID" name="RestaurantID" type="hidden" value="13">

        <div class="editor-label">
            <label for="Name">Name</label>
        </div>
        <div class="editor-field">
            <input class="text-box single-line" data-val="true" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="furaibo">
            <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
        </div>

        <p>
            <input type="submit" value="Save" class="ui-button ui-widget ui-state-default ui-corner-all" role="button" aria-disabled="false">
        </p>
    </fieldset>
</form>

AJAX POST用于拦截形式/提交。模态对话框弹出和关闭本身后完成后。我想送岗位之前验证形式:

AJAX POST is used by intercepting the form/submit. The modal dialog pops up and closes itself after the post completes. I would like to validate the form before sending the post:

// force change the submit data to an ajax POST (usually 'save', 'delete' button)
$('#modal-dialog').delegate('form', 'submit', function (e) {
    e.preventDefault();
    var form = $(this);
    form.validate(); // does nothing
    if (form.valid()) {
        $.ajax({
            url: form.attr('action'),
            type: "POST",
            data: form.serialize(),
            success: function (data) {
                $('#modal-dialog').dialog('close');
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
            }
        });
    }
});

难道我碰坏做这个? .valid()总是返回true。

Did I break something by doing this? .valid() always returns true.

我的web.config中有:

My web.config has:

  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

我的网页源代码有:

My page source has:

<link href="/DartsMVC/Content/themes/cupertino/jquery-ui-1.8.14.custom.css" rel="stylesheet" type="text/css">

<script src="/DartsMVC/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
<script src="/DartsMVC/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/DartsMVC/Scripts/jquery-ui-1.8.14.custom.min.js" type="text/javascript"></script>

<script src="/DartsMVC/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/DartsMVC/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/DartsMVC/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

和我的模型有:

    [Required]
    public string Name { get; set; }

在更多的研究,我认为它可能是与动态控件:

After more research, I think it may have something to do with dynamic controls:

  • 由于数据-VAL属性存在,它不是一个形式的范围问题
  • 我会尝试调用$ .validator.unobtrusive.parse('#formid)。如果do​​ensn't工作中,我将使用这个最后一招:
  • <一个href="http://xhalent.word$p$pss.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/">http://xhalent.word$p$pss.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/

推荐答案

解决

调用$ .validator.unobtrusive.parse($('表')),并获得成功。我想验证需要重新创建动态内容

Calling $.validator.unobtrusive.parse($('form')) did the trick. I guess the validator needs to be recreated for dynamic content

这篇关于麻烦不引人注目的验证与MVC 3 jQuery的阿贾克斯后工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆