Asp.net 防止在编译期间将页面主题强加于每个aspx页面指令

Asp.net 防止在编译期间将页面主题强加于每个aspx页面指令,asp.net,web-config,themes,Asp.net,Web Config,Themes,在我的web.config中,我使用以下页面声明 <pages maintainScrollPositionOnPostBack="true" Theme="Theme1"> 目的是能够在web应用程序上使用不同的主题,为几个不同的客户端(其中一些客户端希望在web应用程序的页面上有自己的品牌)定制它的显示方式 如果我在开发代码中省略了theme指令,那么调试时它不会正确显示,因此我希望在web.config中定义主题。。。但是,当定义如上所述并且我要发布我的解决方案时,每个.

在我的web.config中,我使用以下页面声明

<pages maintainScrollPositionOnPostBack="true" Theme="Theme1">

目的是能够在web应用程序上使用不同的主题,为几个不同的客户端(其中一些客户端希望在web应用程序的页面上有自己的品牌)定制它的显示方式

如果我在开发代码中省略了theme指令,那么调试时它不会正确显示,因此我希望在web.config中定义主题。。。但是,当定义如上所述并且我要发布我的解决方案时,每个.aspx页面声明都是这样的:

<%@ Page Language="VB" CodeFile="MRSHome.aspx.vb"%>

为此:

<%@ page language="VB" inherits="App_Web_peiwi24o" theme="Theme1" maintainScrollPositionOnPostBack="true" %>

页面级主题声明会覆盖web.config文件中设置的主题声明,我需要保持这种情况,因为有些页面会在用户需要时以编程方式切换到打印友好的主题


如何防止在编译期间将web.configs页面设置附加到每个页面的页面声明中?

您可以在webconfig中添加appsettings,而不是在web.config页面声明中声明主题:

<appSettings>
    <add key="MyCustomTheme" value="Theme1" />
</appSettings>
因此,部署时,页面声明将不包含任何主题。在运行时,它将拾取配置中定义的正确主题

Protected Sub WebForm1_PreInit(sender As Object, e As EventArgs) Handles Me.PreInit
        Dim myTheme As String = ConfigurationManager.AppSettings("MyCustomTheme")
        Page.Theme = myTheme 
End Sub