主题在运行时被引用但未使用

时间:2008-11-05 15:31:01

标签: asp.net

我有一个使用主题的网站。根据网址(如果是A.something.com或B.something.com,其中A和B代表客户端),我将加载不同的主题。目的是为不同的客户端使用一个代码库。我有一个app_themes文件夹,里面有几个主题,针对不同的客户端,以及每个主题的不同CSS文件(出于商业原因,CSS文件对于每个主题是相同的,但是重复)。所以我的代码看起来像这样:

Public Overrides Property StyleSheetTheme()As String

    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 个答案:

答案 0 :(得分:2)

只有在Visual Studio中运行代码时才会发生这种情况吗?

在ASP.Net Development Server中运行时,App_Themes中的样式不会在任何未经身份验证的页面上使用(例如Login.aspx或ForgotPassword.aspx)。这是因为用户尚未对该文件夹具有浏览权限,或者App_Themes文件夹缺少浏览权限。显然,IIS会处理这个问题,但Cassini不会这样做。

尝试将此添加到web.config,以便在身份验证之前使主题和样式有效。

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

或者,如果可能,请切换到在计算机上的IIS上运行应用程序。

答案 1 :(得分:0)

您可以通过web.config指定应用程序(或文件夹)使用的主题,而不是通过代码执行此操作:

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

这假设您为每个客户端提供了不同的web.config文件。