我在 ajax.ActionLink 之后遇到了不显眼的验证问题,表单正确提交,当 ajax 替换 div 目标时,不创建客户端验证。
我认为这是:
@using (Ajax.BeginForm("Action", "Controller", new { area = "Area" }, new AjaxOptions { HttpMethod = "post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divTarget" }))
{
//html stuff....
<li>
<label><br/></label>
<div class="perfil_datos_botones">
<input type="submit" value="Crear cita" id="enviar">
@Ajax.ActionLink("Volver", "Action", "Controller", new { area = "Area" }, new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "divTarget", OnComplete = "ValidarForm('target')" }, new { @class = "links_botones" })
</div>
</li>
</ul>
}
OnComplete 函数:
function ValidarForm(sel) {
var selector = "#" + new String(sel);
$.validator.unobtrusive.parse(selector);
}
我把这个放在视图上:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
这在布局中:
@Scripts.Render("~/bundles/jqueryval_noajax")
这个包在没有 ajax.unobtrusive.js 的情况下呈现 jquery-validation 插件,因为这会在视图上生成多个帖子
我曾尝试在 OnSuccess 中使用该函数并且任一工作,验证器都会抛出一个异常,上面写着:“unobtrusive field is undefined”。
我需要在每个使用 ajax.BeginForm 或 ajax.ActionLink 的 partialView 上重新加载客户端验证。
编辑1:
我发现$.validator
是这样undefined
,我通过 jquery 的 ajax 更改了 ajax.actionLink,但我仍然收到错误