2012-03-08 51 views
0

我有一個MVC 3頁有兩個局部視圖,一個用於Items in Bucket A,一個用於Items in Bucket B(簡化討論...有顯著的邏輯來呈現每個桶,而邏輯是桶之間不同)。一個鏈接可以調用兩個Ajax更新嗎?

我在頁面上有一個鏈接,可以讓我將一個項目從Bucket A移動到Bucket B。一旦鏈接被點擊,我需要刷新的部分觀點爲Items in Bucket A,和Items in Bucket B的局部視圖。

我可以刷新一個或其他使用Ajax,就像這樣:

@Ajax.ActionLink("Move to B", "_BucketB", "Home", new { item = Model.Item }, 
new AjaxOptions() 
{ 
    UpdateTargetId = "divForBucketB", 
    HttpMethod = "Post", 
    InsertionMode = InsertionMode.Replace 
}) 

我如何能接近的還有提神醒腦divForBucketA被點擊ActionLink的問題時?

UPDATE

即進入divForBucketA需要使用適當的視圖和控制器來產生HTML。到div內容的變化太顯著要在客戶端上使用JavaScript(除也許另一個調用Ajax調用...可以在做什麼?)

+0

我覺得你最好放棄'AjaxOptions',並且只是用jQuery來滾動你自己的ajax。這樣你可以執行'onclick = myfunction()',其中myfunction()會觸發2個Ajax調用並更新div。 – RPM1984 2012-03-08 21:20:56

回答

1

這是你能怎麼用jQuery做。顯然你需要修復Url.Action調用,這確實假定BucketA控制器方法返回一個PartialView。

$(document).ready(function() { 
    $('#mybutton").click(function() { 
    $.get(@Url.Action("Index", "BucketA"), function (data) { 
     $('#bucketA').html(data); 
    }); 
    $.get(@Url.Action("Index", "BucketB"), function (data) { 
     $('#bucketB').html(data); 
    }); 

    e.preventDefault(); 
    }); 
}); 
+0

您能解釋一下「修復Url.Action調用」的含義嗎? – 2012-03-08 21:25:06

+0

@ Url.Action(「指數」,「BucketA」)< - 只會如果你有一個叫BucketAController控制器與一個叫索引方法,該方法返回一個PartialView工作()。你會想要給@ Url.Action調用提供正確的參數 – 2012-03-08 21:26:13

1

你可以使用OnCompleteOnSuccess(取決於AjaxOptions處理您的需要)指定一個Javascript函數在Ajax調用完成後執行任何額外的處理(例如更新其他存儲區)之後調用。

+0

「Bucket A」的內容需要由適當的控制器生成......在客戶端的JavaScript上執行該操作並不合適。我會更新這個問題來說明問題。 – 2012-03-08 21:03:41

+0

在這種情況下,您可以爲鏈接添加一個onclick處理程序,並讓它調用一個啓動兩個ajax調用的javascript函數,一個用於更新每個div。 – 2012-03-08 21:07:29

+0

我上面的評論意味着刪除Ajax.ActionLink,並將其設置爲您設置onclick處理程序的常規鏈接。 – 2012-03-08 21:08:02

相關問題