2010-12-20 89 views
4


我是新來的Asp MVC,我試圖完成一個異步更新(我使用MVC3 RC2,與剃刀,但我可以管理也有ASPX解決方案)。ASP MVC + AJAX,試圖更新異步

我有一個母版頁,它通過調用Html.RenderAction(「Cart」,「Shop」)在每個頁面上呈現購物車框。 ShopController的Cart動作調用數據庫等,並輸出結果。這工作。
第一個問題:,如果我把一個ActionLink的是,該部分視圖(如Html.ActionLink(「刪除」)),那麼即使我叫PartialView()從刪除的動作,它只是呈現在購物車,並沒有什麼其他(本質上,我的頁面消失)。
第二個問題:在這個局部視圖中有一個叫做「cartContent」的div。我希望能夠在ANYWHERE(不僅在母版頁或部分視圖中)放置一個鏈接,當它按下時調用一個控制器Action,然後根據結果更新cartContent div。我已經嘗試了Ajax.ActionLink,但它與Html.ActionLink一樣,即使我導入了Microsoft.MvcAjax js庫。
另外,如果我解決了第一個問題,我希望它也是異步的。

我使用什麼解決方案?我已經嘗試將UpdateTargetID設置爲「cartContent」,我嘗試將cartContent包裝到Ajax.BeginForm中,沒有任何內容。我必須使用jQuery(我什麼都不知道)?我是否將一些響應序列化爲JSON,並在Javascript中手動更新div? (我不是在JS真是太好了,我是從事物的C#那邊傳來)

+0

ajax.beginform應該是答案,你是否在默認主佈局中啓用mvc ajax javascript?我記得它默認是禁用的。 http://davidhayden.com/blog/dave/archive/2009/05/19/ASPNETMVCAjaxBeginForm.aspx也可以幫助 – xandy 2010-12-20 01:00:13

+0

這是我讀過的同一頁。我的_Layout.cshtml(就像SiteMaster的模板)中有以下幾行: TDaver 2010-12-20 07:24:01

回答

4

你把任何你想要的鏈接:

@Html.ActionLink("remove item", "remove", "somecontroller", 
    new { id = Model.Id }, new { @class = "remove" }) 

,然後在單獨的JavaScript文件:

$(function() { 
    $('.remove').click(function() { 
     // when the link is clicked 
     // perform an ajax request: 
     $.ajax({ 
      url: this.href, 
      type: 'delete', 
      success: function(result) { 
       // when the AJAX call succeed do something with the result 
       // for example if the controller action returned a partial 
       // then you could show this partial in some div 
       $('#someDivId').html(result); 
      } 
     }); 

     // don't forget to cancel the default action by returning false 
     return false; 
    }); 
}); 

備註:如果要更新的股利也包含鏈接,那麼你可能需要使用.live()功能或單擊事件處理程序將無法正常工作,第二次是因爲DOM將被修改:

$('.remove').live('click', function() { 
    ... 
}); 
+0

type:'delete'< - 這是什麼? (我瞭解其餘的,現在嘗試,非常感謝你) – TDaver 2010-12-20 07:48:25

+0

@TDaver,它表示使用DELETE HTTP動詞。所以你的控制器動作可以用'[HttpDelete]'裝飾。在服務器上刪除資源時,使用DELETE動詞是一個好主意。它更加RESTful。 – 2010-12-20 07:51:21

+0

哇!有些東西在工作:)當我從工作中回來時,我會試試現場。還有一件事:我必須爲每個想要異步刷新的div編寫這個JS,還是可以創建一個通用的JS?爲什麼在MS AJAX庫中沒有這樣的一個?謝謝btw,你只是讓我的一天! – TDaver 2010-12-20 07:57:02