2017-04-19 5 views
0

Ajaxポストに関して、誰かが正しい方向に向けることを願っています。私は選択された以前の値に応じてトグルされる多くの質問を持つ長い形式を持っています。 Ajaxを使用してフォームを送信すると、フォームが正常に送信され、_Successパーシャルが正しく表示されます。しかし、私がフォームにエラーを作り、それを提出すれば。ポストバックすると、すべてのJQueryはMVC @Html.ValidationMessageForの表示を正しく動作させなくなりますが、トグルされたフィールドは緑色の確認とともにリセットされます。ポストバックフォームの状態でAjaxを使用したMVCポストフォームとJQueryのリセット

以前の状態を維持するにはどうすればよいですか?あるいは、私はこれを間違ってやって、これを行う良い方法がありますか?

ありがとうございます!

Form field before submit

Form After submit toggled question now hidden and colour missing

私のコード例:

ビュー

<div id="test-container"> 
    @Html.Partial("_PartialView",Model) 
</div> 

パーシャルビュー

<form method="post" action="@Url.Action("SendReport","Report")" data-form-ajax="true" data-form-target="#test-container"> 


// form fields here 

コントローラ

if (Request.IsAjaxRequest()) 
      { 
       if (!ModelState.IsValid) 
       { 
        // set model 
        return PartialView("_PartialView",model); 
       } 

       // more model methods 

       if (model.RecordMessage.Type == MessageType.Success) 
       { 
        return PartialView("_Success", model); 
       } 
       else 
       { 
        return PartialView("_PartialView", model); 
       } 
      } 

アヤックス

var ajaxSubmitForm = function() { 


    var $form = $(this); 

    var options = { 
     url: $form.attr("action"), 
     type: $form.attr("method"), 
     data: $form.serialize() 
    }; 

    $.ajax(options).done(function (data) { 


     $("#test-container").html(""); 
     $("#test-container").append(data); 
    }); 

    return false; 
}; 


$("form[data-form-ajax='true']").submit(ajaxSubmitForm); 

答えて

1

あなたはjQueryのバリデータにフォームを追加することができ、バック再度有効に検証するには。これは、追加の後で処理する必要があります。

var form = $("#myForm"); 
form.removeData('validator'); 
form.removeData('unobtrusiveValidation'); 
$.validator.unobtrusive.parse(form); 

jqueryプラグインを使用している場合は、これらのトグルを再度アクティブにする必要があります。

+1

あなたのソリューションに感謝Cristian。私はちょうどこのポストに気づきました、そして、これは実際に私がやったことも事実です! – Alan

関連する問題