我在 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
谁能发现我做错了什么?