[英]ASP.NET MVC multi-site design
我正在尋找一個新的MVC網站,而我要解決的關鍵問題之一是在公共區域(面向Web)和內部區域之間共享代碼。
基本上,我們有兩個應用程序,一個是用戶訪問的公共網站,另一個將在公司內部使用,以查看在公共站點上也可見的某些相同信息。
我希望將它們保留為兩個單獨的站點(項目),因為我們在每個站點上都有不同的人員團隊,並且因為我們想使用不同的身份驗證格式(用於公共的表單,用於內部的Windows)。
但是,我們還希望能夠在兩個站點之間共享一些代碼(視圖,控制器)。 我們如何設置這兩個MVC站點,以便一個MVC站點可以引用另一個項目中的視圖和/或控制器?
例如,我們將具有一個視圖,使內部用戶可以查看我們的公共站點用戶的交易歷史記錄。 如果我們在內部站點中創建了該控制器/視圖,后來又想在公共站點中添加該視圖,那么我們如何在公共站點上重復使用同一視圖?
從技術上講,正如其他人已經說過的那樣,您可以將要共享的所有內容放在類庫項目中,然后從其他項目中引用該項目。 視圖有些不同,因為要在項目之間共享它們,則必須對其進行編譯。 為此,您將需要Razor Generator 。
但是,實際上,很少要在項目之間共享視圖(除了布局之類的視圖),而且幾乎不存在共享控制器的視圖。 如果重疊的部分是偉大的,它是一個參數,這兩個項目應該不會 ,其實是兩個項目,而是一個。 控制器和視圖是如此針對應用程序定制的,以至於大多數情況下共享它們就變得毫無意義。 但是,共享模型和其他類是一個非常好的主意。
我能想到的2種方法:
第一種選擇是使用MVC Area 。 共享相同的模型時,它為每個區域提供不同的控制器/視圖。 您還可以將通用方法封裝在Helper類中。
第二個選擇,創建3個項目。 一個是.NET庫,其中包含通用邏輯,模型,驗證,發送電子郵件等。然后再創建2個MVC項目,每個站點一個,並引用該項目。
查看在您的站點內使用Areas(這將使您保持項目獨立,但作為一個最終解決方案)。 另外,請查看在另一個庫中編譯視圖,以便可以在項目之間共享它們。
一些參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.