2009-07-02 11 views
2

jQueryフォームのajaxポストをコントローラメソッドにポストするための特別なソースを持っている人は、同じページの既存のPartialViewに強制的に更新を強制しますか?部分的なHTMLを元に戻したり追加したりする必要がありますか?PartialViewを魔法のようにリフレッシュさせることができますか?Refresh PartialView by jQuery via Ajax Post

ありがとうございます。 ダグ

ここでは、以下のフォームと私れるrenderPartialですが....この下の私のAJAX呼び出しかられるrenderPartialをリフレッシュしたい...ここ

<% Html.RenderPartial("p_Offers", Model.Offers); %> 

<h2>Make an Offer</h2> 
<form id="makeOffer" action="/post/makeoffer/<%=Model.Id %>" method="post"> 
    <div class="grid_2 alpha"><label>Comment</label></div> 
    <div class="grid_6 omega"><%= Html.TextBox("Comment")%></div> 

    <div class="grid_2 alpha"><label>Payment Terms</label></div> 
    <div class="grid_6 omega"><%= Html.TextArea("PaymentTerms")%></div> 

    <div class="grid_2 alpha"><label>Amount</label></div> 
    <div class="grid_6 omega"><%= Html.TextBox("Amount")%></div> 

    <div class="prefix_2"> 
     <label>Tentative <input type="radio" checked="checked" name="Confirmed" value="Tentative" /></label> 
     <label>Confirmed <input type="radio" name="Confirmed" value="Confirmed" /></label> 
    </div> 

    <div class="prefix_2"> 
     <input type="submit" value="Make Offer" /> 
    </div> 
</form> 

は、AJAX呼び出し....

です
 $(document).ready(function() { 
     $('#makeOffer').ajaxForm(function() { 
      var f = $("#makeOffer"); 
      var action = f.attr("#action"); 
      var serializedform = f.serialize(); 
      $.post(action, 
       serializedform, 
       function() { 
        alert("post error"); 
       }); 
      // TODO want to refresh Offers partial view 
      return false; 
     }); 

     jQuery().ajaxStart(function() { 
      $("#makeOffer").fadeOut("slow"); 
     }); 

     jQuery().ajaxStop(function() { 
      $("#makeOffer").fadeIn("fast"); 
     }); 
+1

これはうまくいきましたか? – Picflight

答えて

1

部分ビューをdivにラップして部分ビューマークアップ を返すと、単純に.postコールバックを使用して新しいマークアップを置換/追加できます。

以下は、部分的なマークアップ全体を置き換えることに注意してください。 .append()を使いたい場合は、これを簡単に変更することができます。

$.post(action, 
     serializedform, 
     function(html) { 
      $('#viewWrapperDiv').html(html); 
      //$('#viewWrapperDiv').append(html); 
     } 
);