2

我在 JQuery UI 对话框中显示部分视图。部分视图包含包含 Html.ValidationMessageFor 条目的字段,并且表单本身具有 Html.ValidationSummary。我似乎根本无法让客户端验证正常工作。如果我将一个字段留空并使用选项卡转到另一个字段,我预计会看到错误消息。如果我在成功加载部分视图时包含此行,我已经能够看到验证消息...

$.validator.unobtrusive.parse('#theForm');

但这只是在我提交 ajax 表单时,而不是之前。

jquery 在 jquery ui 对话框中加载部分视图...

$('#theForm').load('/Company/Edit', function (response, status, xhr)
        {
            if (status != "success")
                $('#theForm').html('failed to load details')
            else {
                $.validator.unobtrusive.parse('#theForm');
                $('#theForm').dialog({ title: title, show: 'blind', hide: 'blind', width: '1000px' });
                $('#theForm').dialog('open');
            }
          });

局部视图...

    @model CompanyDetails

    @using (Ajax.BeginForm("Save", "Company", new AjaxOptions() { HttpMethod="Post", OnSuccess="closeForm" }, new {@id = "companyDetailsForm"}))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary() 
        <fieldset>
            <legend>Company Details Form</legend>
            <ol>
                <li>
                    @Html.LabelFor(c => c.Name)
                    @Html.TextBoxFor(c => c.Name)
                    @Html.ValidationMessageFor(c => c.Name)
                </li>
                <li>
                    <input type="submit" value="Save" />
                </li>
            </ol>
        </fieldset>
}

这里是模型类......

public class CompanyDetails
{
    [Required]
    [Display(Name = "Company Name")]
    public string Name { get; set; }
}

我的 web.config 中有这个...

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

我包含以下 javascript 文件..

  • jquery-ui-1.9.2.js
  • jquery.unobtrusive-ajax.js
  • jquery.validate.js
  • jquery.validate.unobtrusive.js

谁能发现我做错了什么?

4

1 回答 1

4

但这只是在我提交 ajax 表单时,而不是之前。

这就是不显眼的 javascript 验证的工作原理。如果您将某个字段留空并从中抽出标签,则在您尝试提交表单之前不会触发验证。

于 2013-02-06T15:08:10.713 回答