2017-08-15 98 views
0

我有一个使用jQuery的不显眼的验证一个asp.net MVC应用程序。我想在如下所述生成的表单上使用Html.ValidationSummary。我可以在由ajax调用返回的PartialView上使用ValidationSummary吗?

是否有任何黑客或解决方法,我可以用得到Html.ValidationSummary对那些通过Ajax调用其获取和显示局部视图生成的表单工作?

我使用AJAX调用一个控制器动作返回一个局部视图。然后,我将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> 
} 
+1

什么做你的意思_right现在不显眼的jQuery验证works_?您动态加载表单,除非您在ajax成功回调中重新验证验证器,否则您将不会得到任何验证。 –

+0

@StephenMuecke,验证工作,我看到了客户端验证的消息。我将如何“重新验证器”?我在窗体上调用.validate(),我想这是什么? –

+2

不,你不会的。还有就是使用没有什么区别'ValidationSumary()'和'ValidationMessageFor()'只要客户端验证而言(当然'ViewData'没有什么用它做)。请参阅[这个答案](https://stackoverflow.com/questions/31768946/required-field-validations-not-working-in-jquery-popup-mvc-4/31769058#31769058)如何重新分析验证 –

回答

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); 
     } 
    }); 
相关问题