2012-09-03 59 views
1

我需要能夠爲每個客戶端提供不同版本的整個網站。當然,測試版與生產版相比,但它可以很好地服務一個或兩個以前的生產版本。鼓勵客戶定製,我不希望強制所有客戶遵循(預期的)開發速度。MVC3如何提供不同版本的網站

要提供哪個版本存儲在數據庫中。

從迄今爲止我讀過的一個自定義視圖引擎可能是實現這一目標的最直接的方法,但在走向這條路之前,我會歡迎任何建議和意見。

感謝您的見解! 埃裏克

編輯:它不只是意見是不同的;控制器,母版頁,圖像,CSS ...

+1

我去了自定義視圖引擎路線:http://stackoverflow.com/questions/9838766/implementing-a-custom-razorviewengine – Liam

+0

爲什麼不只是部署兩個不同的網站? –

+0

@TomasJansson,因爲我希望客戶的客戶看不到它。否則,我認爲多個網站可能會更簡單。 –

回答

1

如果有關向哪個用戶顯示哪個版本的規則,我猜他們需要首先進行身份驗證。如果是這種情況,您將有機會在用戶上設置Cookie。

我可能會在身份驗證中設置一個cookie,以確定向用戶顯示哪個版本,然後使用IIRF之類的URL重寫器來將該cookie設置爲該網站的beta版本的請求。

如果用戶在測試版中遇到問題,可以選擇返回到生產站點,這樣做有額外的好處。

+0

我以爲我只會在數據庫中存儲哪個版本。使用cookie做這件事有什麼好處嗎? –

+0

優勢在於您可以並行部署網站的兩個版本,所有用戶在一個站點上進行身份驗證,數據庫仍然會說明登錄後應該爲哪個站點提供服務,然後URL重寫器可以讀取Cookie,以便用戶服務於正確的頁面,並且這些過程對他們來說是不可見的 – joocer

+0

有沒有辦法讓這項工作即使用戶禁用了Cookie?例如,URL重寫器是否可以查看用戶的身份並查找要提供哪個版本? –

1

我走下視圖引擎路線How do I implement a custom RazorViewEngine to find views in non-standard locations?

基本上它是一個非常挺直向前,我們有相同的控制器模型,等所有的代碼是共享的。儘管意見的呈現基於「品牌」。因此,視圖引擎足夠聰明,可以說我是品牌A,那麼視圖將存在於{標準視圖位置} /品牌/視圖名稱中。

儘管如此,如果視圖位於品牌文件夾中,它使用該文件夾,否則它將回到默認位置。它基本上是MVC用來查找視圖源位置的標準模型的擴展。

相關問題