2011-07-30 36 views
0

我有一個MVC 3 Web應用程序,我想實現一個主題/模板框架(類似的WordPress或Joomla,你可以啓用或停用相關網站的不同主題)和想找出什麼是最好的方法來完成這一點。創建一個MVC 3網站的主題設計

我的設計約束是這樣的。我從Themeforest或Template Monster等地購買HTML模板,並希望在我的網絡應用程序中使用一些可用的模板。你通常在網上購買的模板都有着非常不同的CSS佈局框架,所以不可能在你的/ Content/Themes /文件夾中放置一個新的CSS,然後你的視圖就可以使用它,因爲你還必須修改HTML觀點。因此,對於/ Content/Themes中的每個新主題,我還需要一組新的/ Views /文件夾,其中HTML更新爲使用適合該主題的CSS類。

我知道在一個理想的世界裏,我應該只是都與我的HTML視圖兼容的CSS(即主題切換純粹是基於加載一個新的CSS),但在這種情況下,這是不可能的。

所以我不知道是否有辦法告訴MVC在當前的默認瀏覽文件夾?一個可能的項目結構我想是這樣的:

/主題/ THEME1 /瀏覽/(所有CSHTML視圖頁面爲這個主題放在這裏) /主題/ THEME2 /瀏覽/(等)

我知道我可以強制這樣

return View("~/Themes/Theme1/Views/Controller/Index.cshtml") 

它可以擴展到動態確定的是這樣

主題文件夾視圖
return View(currentThemeFolder + "/Views/Controller/Index.cshtml") 

但我想知道是否有更好的方法來做到這一點?有沒有可能在global.asax中設置默認的「視圖」文件夾,以便上述不是必需的?必須有視圖的入口點,因爲您如何指定調用哪個_viewstart.cshtml文件?如果我確實採取上述強制/「半硬編碼」的設計,那麼它們的缺點是什麼?我也想說,我沒有看多少在MVC 3區域,我不認爲這會在這裏工作,因爲我的理解是,它會影響你的路由,並且還會複製你的模型和控制器我不想要的文件夾。我有中央模型和控制器文件夾,但只需要多個視圖文件夾。

回答