2011-12-19 62 views
1

我的應用程序有許多環境屬性,例如當前的CountryId,DocumentMode等。正如我學到的in a previous question,這些屬性的當前值不應存儲在Session中,而是在每個頁面請求的查詢字符串中發送。到現在爲止還挺好。在MVC中處理模式參數的正確方法是什麼?

所以,當我建立一個網頁,我想安排,所有的動作鏈接看起來是這樣的:

/控制器/動作CountryId = X & DocumentMode = Y & ......

我可以可以通過檢查查詢字符串並滑入每個變量的當前值來輕鬆完成此操作。

問題是,當其中一個值發生變化時,通知應用程序的正確方法是什麼?

具體來說,在每個視圖的頂部,我有一個選擇下拉菜單,顯示例如所有國家/地區。當你選擇一個新的時候會發生什麼?

現在,該更改觸發了一個javascript函數調用,該函數將替換查詢字符串中的CountryId,並調用只重新加載原始頁面的操作,但使用新的CountryId集合重新創建新的操作鏈接。但是這似乎有點不合理。有沒有更好的方法來更新頁面上的所有鏈接,而無需刷新服務器來執行此操作? (我總是可以做一些腳本來做到這一點,但看起來並不重要,如果有內置的方法可以做到這一點,我不想重新發明輪子。)

任何幫助非常感謝。謝謝!

回答

0

我決定暫時保持簡單,只刷新整個頁面,重新創建所有鏈接。我的應用程序體積很小,現在就足夠了。如果我需要構建一個應用程序,而服務器不會像這樣被愚蠢地強調,我會看到就地交換解決方案。

1

您可以將頁面部分更改爲局部視圖,並在每次更改控件時通過AJAX重新加載該視圖。

Partial rendering after page loaded

或者你可以只寫一些JavaScript來更新所有鏈接。發佈一些代碼,我相信你會得到一些很好的寫法建議。

+0

我想只重新渲染包含需要重新創建鏈接的部分會比刷新整個頁面更好,但我不確定增加的複雜性是否值得,因爲在這種情況下*幾乎所有*鏈接需要改變,我仍然有服務器調用。但修改鏈接的想法可能是合理的。可能它會很容易和快速地遍歷所有鏈接並換出參數值。我會在腦海中更新我的問題。謝謝。 – 2011-12-20 00:58:41

+0

此外,參數的當前值位於當前頁面的查詢字符串中,並且更改所有鏈接但不更新地址欄中的值似乎......最多隻能是凌亂。有沒有更新地址欄而不實際導航的方法? – 2011-12-20 02:35:52

+0

在舊版瀏覽器中,只能更改哈希後的內容。 HTML5瀏覽器將允許您更改它。 https://github.com/balupton/history.js – Ryan 2011-12-20 06:24:57

相關問題