我的問題:我有一個MVC3應用程序,其中所有視圖都使用一個公共母版頁。母版頁有很多鏈接到其他(內部)網站。我需要能夠根據部署環境(例如staging.blah.com,www.blah.com,dev.blah.com等)更改這些鏈接的域。該域存儲在web.config中。在asp.net mvc主頁中使用配置設置的首選方法
有很多方法可以做到這一點,但我正在尋找某種關於首選方法的共識。這裏有一些選項,但我願意接受任何建議:
(1)直接從主頁面引用appsettings。這是最簡單和最常見的方法,但我並不特別熱衷於閱讀web.config並在整個主頁面代碼中連接url。實際上,我不確定我喜歡訪問web.config的視圖。 (2)使用讀取配置的自定義操作過濾器將appsetting值粘貼在viewdata/viewbag中。像以前一樣在頁面中連接。 (3)作爲(2),但是通過構造器注入來注入appsetting值,而不是在過濾器中讀取它。
(4)爲所有強類型視圖模型創建一個基類,並使用自定義操作過濾器填充appsetting。
(5)創建一個htmlhelper,它接受路徑並在內部讀取appsetting和並置。 (6)創建一個自定義的視圖基類,注入appsetting的值並使其成爲可用作路徑和連接的屬性或函數。
只是爲了補充一點,即通常當母版頁需要數據時,我喜歡使用Html.Action,但是在整個母版頁中使用這些URL的情況下這是不可能的。
想法?
TFG - 是鏈接「總是」相對的,也就是你永遠不指向的鏈接dev.blah.com和staging.blah.com在同一時間的組合? - 另外,你能解釋一下爲什麼html。行動是不可能與這些網址(爲了我自己的利益:) –
他們總是dev/staging/www,從來沒有混合物,並給予整個頁面的鏈接位置,我需要有大量的html.actions。由於html動作實際上是一個單獨的請求,所以這不會有效。 –