我可以在 ajax 调用返回的 PartialView 上使用 ValidationSummary 吗?
Can I use ValidationSummary on a PartialView returned by ajax call?
我有一个 asp.net MVC 应用程序,它使用 jquery 非侵入式验证。我想在如下所述生成的表单上使用 Html.ValidationSummary。
是否有任何 hack 或变通方法可以让 Html.ValidationSummary 处理通过获取和显示局部视图的 ajax 调用生成的表单?
我使用 ajax 调用控制器操作,其中 returns 是部分视图。然后我将 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();
}
});
控制器动作如下所示:
public ActionResult GetPartialView(long myId)
{
model = GetModel(myId);
return PartialView("_MyPartialView", model);
}
PartialView 是一个普通的旧 *.cshtml 页面,它生成一个表单,如下所示,在该表单上我有一个(非功能性的)ValidationSummary 以及一堆输入。有什么办法可以让它发挥作用吗?现在 jquery 不显眼的验证有效,但它会在每个无效输入旁边显示错误消息。我想让页面在 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>
}
@StephenMuecke,如果你想 post 你的评论作为答案,我会使用它并删除这个。 @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);
}
});
我有一个 asp.net MVC 应用程序,它使用 jquery 非侵入式验证。我想在如下所述生成的表单上使用 Html.ValidationSummary。
是否有任何 hack 或变通方法可以让 Html.ValidationSummary 处理通过获取和显示局部视图的 ajax 调用生成的表单?
我使用 ajax 调用控制器操作,其中 returns 是部分视图。然后我将 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();
}
});
控制器动作如下所示:
public ActionResult GetPartialView(long myId)
{
model = GetModel(myId);
return PartialView("_MyPartialView", model);
}
PartialView 是一个普通的旧 *.cshtml 页面,它生成一个表单,如下所示,在该表单上我有一个(非功能性的)ValidationSummary 以及一堆输入。有什么办法可以让它发挥作用吗?现在 jquery 不显眼的验证有效,但它会在每个无效输入旁边显示错误消息。我想让页面在 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>
}
@StephenMuecke,如果你想 post 你的评论作为答案,我会使用它并删除这个。 @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);
}
});