2009-07-09 69 views
0

我有一個網站(ASP.NET MVC),我想擴展到另一個類似的主題(如stackoverflow-serverfault-superuser)。如何管理多個(不同的)視圖圖層

數據庫層和控制器層對於這兩個網站都是相同的。不同之處在於視圖層,只是一些細節:徽標,主頁和一些資源文件(部分)和CSS。

管理這種情況的最佳方法是什麼?傑夫和他的團隊如何實現這一目標?我的理想目標是擁有一個解決方案(Visual Studio解決方案),一個包含控制器和模型的項目,以及n個不同的項目:每個視圖都有不同的項目。 (增加了這一行來澄清

我完成這個簡單地分支兩個解決方案(與SVN或Mercurial),然後合併發佈?

謝謝你們!

回答

1

我們使用App_GlobalResources文件夾來做到這一點

  • App_GlobalResources文件\ ServerFault.resx
  • App_GlobalResources文件\ StackOverflow.resx
  • App_GlobalResources文件\ MetaStackOverflow.resx

與助手類:

public static class Resources 
{ 
public static string TeamEmail { get { return GetString("TeamEmail"); } }  
public static string GetString(string key) 
{ 
    return HttpContext.GetGlobalResourceObject(
     GlobalApplication.CurrentSite.ToString(), key).ToString(); 
} 
} 

和它出現在像這樣的視圖:

<a href="mailto:<%= Resources.TeamEmail %>">contact us</a> 

對於更多的總置換(例如,/ FAQ),我們有幫助的多個拷貝,象這樣:

  • Faq-ServerFault.aspx
  • Faq-StackOverflow.aspx
  • Faq-StackOverflowMeta.aspx

構建爲每個服務器適當地重命名文件。

(請注意,這些內容的看法,所以他們真的只是常見問題內容本身,母版頁確定佈局的其餘部分)

0

你說你有一個網站,你想擴展它的另一個主題。我想你應該覺得這種方式:

  • 你有web應用程序,做你的工作。
  • 您對您爲其部署一個網站是Web應用程序
  • 現在你想用相同的功能(就像SO-SF)另一個Web應用,但不同的外觀和感覺
  • 我覺得你的任務只是配置你的Web應用程序看起來不一樣,和一個單獨的服務器上部署它

注: *這兩個網站將是彼此獨立的。他們不會有共同的數據! *如果您希望網站進行互動,最好讓網絡應用程序能夠與其自身的其他實例進行交互,然後重新部署。

我希望我明白你問的是正確的,而且我寫的內容會有所幫助。

乾杯,JRH

+0

是的,這可能是正確的,但這樣一來我幾乎在複製整個視圖(資源文件和模板),這聽起來像代碼重複... 我編輯了原始問題,我希望澄清 – 2009-07-09 08:54:56

2

我能想到的在做這個

  1. 兩種方式,你可以有到Apache Web服務器或IIS的情況下,你的域名是不同的,店裏的CSS,標識和其他UI可以存儲在服務器中的東西。

  2. 如果您使用.net,我認爲是因爲您在討論母版頁而您的域沒有區別,您可以添加一些邏輯到您的Web應用程序,以根據一些規則從一個模板切換到另一個模板用戶名或個人資料。如果您使用的是.net,我認爲您可以生成不同的皮膚並根據您必須實施的特定邏輯來分配它們。如果您使用的是其他語言,則還可以生成模板並根據您的規則進行切換。

希望這會有所幫助。

+0

您的第二點問題是代碼將充滿如此多的if-else你幾個月後將無法閱讀和修改它....這不是一個可行的解決方案 – 2009-07-09 08:48:37