JQueryUIダイアログ内に部分ビューを表示しています。部分ビューにはHtml.ValidationMessageForエントリを含むフィールドが含まれ、フォーム自体にはHtml.ValidationSummaryがあります。クライアント側の検証をまったく機能させることができないようです。フィールドを空のままにして別のフィールドにタブで移動すると、エラーメッセージが表示されることを期待しています。部分ビューのロードに成功したときにこの行を含めると、検証メッセージを表示できました...
$.validator.unobtrusive.parse('#theForm');
しかし、それは私がajaxフォームを送信するときだけであり、以前ではありません。
jqueryuiダイアログで部分ビューをロードするjquery..
$('#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.unobstrusive-ajax.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
誰かが私が間違ったことを見つけることができますか?