2008-12-03 97 views

回答

1

有很多的事情可以做。如前所述,第一級使用不同的CSS文件。通過創建一個Helper方法,您可以動態地將您的CSS文件放入不同的路徑。所以它會用這樣的東西:

<link href="<%=AppHelper.GetCSSPath("mysite.css")%>" rel="stylesheet" type="text/css" /> 

這給你一定程度的自定義。進一步的級別實際上會爲每個子站點具有不同的視圖文件。你可以通過創建一個新的ViewEngine來做到這一點:

public class SubSiteViewEngine: WebFormViewEngine 
{ 

    private string GetSiteRoot() { 
    // some logic to get the site root from the incoming URL 
    } 

    public SubSiteViewEngine() 
    { 

    MasterLocationFormats = new[] { 
      GetSiteRoote() + "/Views/{1}/{0}.master", 
      GetSiteRoote() + "/Views/Shared/{0}.master" , 
      GetSiteRoote() + "/Views/Shared/MasterViews/{0}.master" 
     }; 
    ViewLocationFormats = new[] { 
      GetSiteRoote() + "/Views/{1}/{0}.aspx", 
      GetSiteRoote() + "/Views/{1}/{0}.ascx", 
      GetSiteRoote() + "/Views/Shared/{0}.aspx", 
      GetSiteRoote() + "/Views/Shared/{0}.ascx", 
      GetSiteRoote() + "/Views/Shared/Controls/{0}.ascx" 
     }; 
    PartialViewLocationFormats = ViewLocationFormats; 
    } 

} 

希望有幫助。

P.S.我將很快爲我自己的項目做這個工作,所以我應該儘快爲它提供一些實際的工作代碼。

0

您必須檢查傳入的URL併爲每個CSS文件提供不同的CSS文件。如果您想更改公司之間的圖像,可以使用背景圖像。

其他建議:

  • 保存爲不同的公司不同的文件夾(用於常見事物的根源)
  • 如果您必須禁用某些功能,不會對公司的名字問,但詢問是否允許使用當前的「配置文件」。

    If Company = A then 
        UseFunctionX = true 
    else 
        UseFunctionX = false 
    
    //later in the code 
    If UseFunctionX then 
        // do domenthing 
    

    這種方式加入了更多曲線後者是簡單

1

另一種選擇是使用IIS進行安排。您必須檢查性能影響,但通過這樣做,您可以分別控制每個應用程序(或一個池)。

基本上,您所做的是爲系統中的每個租戶創建不同的網站。將它指向您的應用程序文件夾以獲取實際的應用程序代碼。然後應該使用指向其文件夾的虛擬目錄添加可變內容(css,一個文件庫可能會使用你的想象力;-))。

通過使用這種方法,您將不會因爲意外的錯誤等而在租戶之間發生數據交叉的風險。