2010-09-24 64 views
0

有沒有辦法從控制器刷新幾個局部視圖? (返回查看())刷新幾個局部視圖

感謝,

UPDATE1: 例如,我的屏幕上的內容部分兩個部分劃分,留下了客戶列表右側的細節客戶的細節在左側列表中選擇的客戶。如果我創建一個新的客戶,當我保存,我會LILE刷新列表(左部),並看到細節(右部)

+1

with ajax你的意思是? – Stefanvds 2010-09-24 13:07:33

+0

使用Ajax或通過httpost,所有的解決方案都歡迎 – 2010-09-24 13:21:12

回答

0

克里斯,

我能想到簡單地做到這一點的唯一方法通過在主視圖中嵌入多個部分視圖進行刷新。這些將在同一週期內刷新。或者,您可以在刷新視圖時在主視圖中嵌入自定義HTML助手,該視圖運行了approprite代碼。

至於多個意見,從一個動作,我不認爲這是一個好主意或任何可能的。

當然

,規則是沒有被打破:)

+0

看到更新1 :) – 2010-09-24 15:19:48

+0

好吧 - 會看看;) – 2010-09-24 15:57:44

0

我不認爲有任何自動的方式做到這一點,但你可以使用一些約定和:

  • 創建自定義查看多個部分視圖結果的結果,即MultiplePartialViewResult
  • 在執行自定義視圖結果時,請調用每個提供的視圖的每個執行方法。確保將每個包裝在div或其他容器中,以便於在客戶端腳本中檢索
  • 在客戶端腳本中接收到AJAX調用的響應後,從每個容器中獲取該值並將其替換爲相應的元素匹配最初呈現的部分視圖

對於最後一步,您可以使用約定。一個簡單的方法是(如果每個分部視圖只有一個實例)將目標html元素的id更新到您在第二步中用於包裝它的div /容器中。

0

根據你的意思,我認爲使用javascript和ajax從服務器刷新將是最好的。

您可以使用Html.RenderPartialAction實現DRY,方法是將其放在頁面上,然後使用ajax和javascript加載。

如果你使用jQuery,那麼像這樣的工作:

jQuery("#divToReload1").load('Url/To/PartialAction')... 
jQuery("#divToReload2").load('Url/To/PartialAction')... 

只要把自己的所有函數內部,你會立刻重新加載所有的諧音。

您可以通過使用數據參數發送數據,並捕獲回調函數來執行您想要的操作。