簡體   English   中英

ASP.NET MVC多站點設計

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM