我有一个asp.net MVC应用程序,它使用jquery不显眼的验证。我想在如下所述生成的表单上使用Html.ValidationSummary。
我是否可以使用任何黑客或解决方法来获取Html.ValidationSummary来处理通过ajax调用生成的表单,该表单获取并显示部分视图?
我使用ajax来调用Controller动作,该动作返回部分视图。然后我将div的html设置为ajax调用结果。 ajax调用如下所示:
$.ajax({
type: "GET",
url: '/MyDomain/GetPartialView?myId=' + myId,
cache: false,
dataType: "html",
success: function (responseText) {
$tab.html(responseText);
$tab.find('form').validate();
}
});
Controller Action看起来像这样:
public ActionResult GetPartialView(long myId)
{
model = GetModel(myId);
return PartialView("_MyPartialView", model);
}
PartialView是一个简单的旧* .cshtml页面,它生成一个表单,如下所示,在该表单上,我有一个(无效的)ValidationSummary以及一堆输入。有什么方法可以让它发挥作用吗?现在jquery unobtrusive验证工作,但它显示每个无效输入旁边的错误消息。我想让页面在ValidationSummary中显示错误消息。
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<span id="validation-errors" class="validation-summary-errors">@Html.ValidationSummary(false, "Submit was unsuccessful. Please correct the errors and try again.")</span>
<div>@Html.EditorFor(m => m.MyField)</div>
}
答案 0 :(得分:0)
@StephenMuecke,如果你想发表你的评论作为答案,我将使用它并删除这个。 @StephenMuecke所述的答案是重新解析验证器。我的ajax调用现在看起来像这样,增加的2行代码修复了这个问题:
$.ajax({
type: "GET",
url: '/MyDomain/GetPartialView?myId=' + myId,
cache: false,
dataType: "html",
success: function (responseText) {
$tab.html(responseText);
var $form = $tab.find('form');
$form.data('validator', null);
$.validator.unobtrusive.parse($form);
}
});