2008-11-05 61 views
0

我有一個使用主題的網站。根據URL(如果它是A.something.com或B.something.com,其中A和B代表客戶端),我將加載一個不同的主題。目的是爲不同的客戶使用一個代碼庫。我有一個app_themes文件夾,裏面有幾個主題,不同的客戶端,以及每個主題的不同CSS文件(出於商業原因,每個主題的CSS文件都是相同的,但重複)。所以,我的代碼如下所示:主題在運行時被引用但未被使用

公共覆蓋屬性樣式表裏()作爲字符串

Get 
     Dim myHost As String = Request.Url.Host 
     Return myHost 
    End Get 
    Set(ByVal value As String) 
    End Set 
End Property 







Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit 

    If Request.Url.Host.Contains("Savills") Then 
     Page.Theme = "Savills" 
    ElseIf Request.Url.Host.Contains("localhost") Then 
     Page.Theme = "localhost" 
    ElseIf Request.Url.Host.Contains("test.concepglobal.com") Then 
     Page.Theme = "test.concepglobal.com" 
    ElseIf Request.Url.Host.Contains("concepglobal") Then 
     Page.Theme = "concepglobal" 

    End If 



End Sub 

我App_Themes文件夾結構:

App_Themes文件:

本地主機:

Default.css

第一太平戴維斯

Savills.css

但是,每次我加載網站時,css都沒有被拾取。所以我沒有得到我在CSS中設計的h1樣式(它在那裏),但只有在aspx頁面中指定的圖形。

我運行網站源:

(加載該網址的網站)。

令人困惑的是,還有一個鏈接到相同的CSS:

我在做什麼錯?

謝謝

回答

2

這是否僅在從Visual Studio中運行代碼時發生?

在ASP.Net Development Server中運行時,App_Themes中的樣式將不會用於任何未經身份驗證的頁面(如Login.aspx或ForgotPassword.aspx)。這是因爲用戶還沒有該文件夾的瀏覽權限,或者App_Themes文件夾沒有瀏覽權限。顯然,IIS處理這個,但卡西尼沒有。

嘗試將此添加到web.config中,讓主題和樣式在驗證之前工作。

<location path="App_Themes"> 
    <system.web> 
     <authorization> 
     <allow users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

或者,如果可能,切換到在您的機器上運行IIS上的應用程序。

0

而不是做這雖然代碼,你可以通過你的web.config指定應用程序使用的主題(或文件夾):

<system.web> 
    <pages theme="concepglobal"></pages> 
</system.web> 

這裏假設你有不同的web.config文件,爲每個客戶端。

相關問題