2009-07-16 50 views
1

我有一個用於搜索的Asp.net MVC局部視圖。它執行Ajax調用來檢索結果。一旦結果被檢索並顯示在結果窗格中,用戶可以單擊任何結果行中的鏈接來選擇其中一個搜索結果。當用戶點擊鏈接以選擇其中一個搜索結果時,它將發出Ajax請求更新某個狀態。一旦這個Ajax調用完成,我需要重定向到另一個頁面,但目標頁面取決於用戶所在的頁面。此搜索部分視圖將託管在多個頁面中,並且每個主機頁面的重定向位置都不相同。我想不出有什麼辦法可以做到這一點,並且不會過分地將部分視圖耦合到託管頁面(反之亦然)。當部分視圖中的ajax調用完成時,如何在主機MVC頁面上調用javascript?

我猜另一個選擇可能是重定向到另一個頁面,一旦選擇Ajax調用完成(這是最終的目標),但不會在一個Ajax調用中的重定向結果被吞下?

或者有沒有辦法在每一行上都有一個按鈕或鏈接,而不是導致發出可能返回重定向結果的發佈請求,並且目標基於調用頁面?

回答

1

我最終使用了一種TemplateMethod模式來完成這項工作。在我的部分我已經添加了JavaScript函數:

function onActionCompleted() { 
    DoSomethingLocal(); 
    if (typeof DoSomethingInParentPage == 'function') { 
     DoSomethingInParentPage(); 
    } 
} 

它檢查是否函數存在,是一個功能,如果是它調用的函數。爲了使其工作,宿主頁面可以選擇實現方法DoSomethingInParentPage,以在部分操作完成時完成某些操作。我不確定如何檢查參數匹配,但至少在部分工作完成後我會接到電話。

相關問題