2014-02-15 61 views
0

遷移我的大腦從的WebForms MVC的,我想:asp.net的MVC打開另一種觀點認爲在JavaScript

1)點擊一個按鈕,這將 2)執行一些JavaScript,這將 3)開放一個新的窗口(或標籤,取瀏覽器被用於設置),將顯示從相同溶液的現有視圖,和 4)具有視圖執行一些數據加載

我卡在圖3和4

3)其中:

function foo(){ 
var wrkURL = globalURLVarFromViewOneThatPointsToViewTwo 
window.open(wrkURL,"_blank") 
} 

如何在同一解決方案中指定另一個現有視圖(ViewTwo)的URL?有沒有可以在ViewOne中調用的幫助器,它將在調用視圖中創建該URL,並加載到globalURLVarFromViewOneThatPointsToViewTwo中?或者,如果我必須說明ViewTwo的URL,那麼這個語法是什麼樣的?

4)如何讓ViewTwo在顯示前或顯示後立即自動執行某些數據操作(如查找FlexGrid的數據)?我知道如何在document.ready上對控制器/ action執行Ajax調用;有沒有其他的方式來調用一個控制器/動作,並加載view.bag,作爲視圖顯示,而不是?

回答

2

爲建設地址,看看網址助手:

@Url.Action("ActionName", "Controller", new { 
    someVariable= someData 
}) 

至於#4,注意到,當我建立的網址,我與路由參數進行編譯。這些參數將傳遞給您的控制器的操作,您可以按照您的要求進行操作(只需確保路由已配置,以便您可以根據您的預期操作進行適當的匹配)。

+0

感謝您的意見。將解決方案重新提交到#4,我不確定這是否解決了「在視圖顯示上執行數據加載」的需要。是否有語法讓視圖在第一次加載時自動執行控制器操作?還是必須從調用控制器完成視圖加載之前? – wayfarer

+0

Doh!我懂了。我可以調用任何我想要的JS控制器。這可以有我需要的「數據加載」操作。好的,我認爲這是完成的。 – wayfarer

2

實際上action methods對網址做出了響應。所以你需要爲操作方法創建一個URL。確保您從操作中返回該特定視圖。

var wrkURL = '@Url.Action("SomeAction", "SomeController")'; 
+0

Doh!這很簡單,我沒有得到它將與window.open工作。謝謝。 – wayfarer