[英]MVC3 Ajax Form Validation with Partial View not Working
我有一个奇怪的问题,那就是局部视图(由Ajax.ActionLink呈现)中的非侵入式验证不起作用。
这是部分视图:
@model MyWeb.Models.PersonSkill
@using (Ajax.BeginForm("EditSkill", null, new AjaxOptions { UpdateTargetId = "skills" }, new { id = "EditSkillForm" }))
{
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.YearsOfExperience)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.YearsOfExperience)
@Html.ValidationMessageFor(model => model.YearsOfExperience)
</div>
<p>
<input type="submit" value="Save"/>
</p>
}
这称为:
@Ajax.ActionLink("Edit", "LoadEditSkill", new { id = item.Id }, new AjaxOptions() { UpdateTargetId = "editSkillDialog" }, new { @class = "editSkill" })
视图呈现良好。 它将数据回传到服务器,但是它没有经过验证。
非常感谢Joe Tuskan向我指出了正确的方向。
我通过在电话中添加OnSuccess订户来解决此问题:
@Ajax.ActionLink("Edit", "LoadEditSkill", new { id = item.Id }, new AjaxOptions() { UpdateTargetId = "editSkillDialog", OnSuccess = "onSuccess" }, new { @class = "editSkill" })
并加入调用解析(),如解释在这里 :
var onSuccess = function () {
// enable unobtrusive validation for the contents
// that was injected into the <div id="result"></div> node
$.validator.unobtrusive.parse($("#editSkillDialog"));
};
始终确保您包括对以下内容的必要引用
jquery.validate.min.js和jquery.validate.unobtrusive.min.js,当然还有主要的jquery库,这通常是最常见的问题,正如我在您的cshtml中所看到的那样,它们也不存在于您的页面中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.