C# 动态切换样式表
我的任务是把两页合并成一页。我使用ASP.NET。加载时,我必须选择一个.css,一个业务对象,并在asp:updatePanel中填充数据。两个站点都应该显示来自两个不同设备的日志 据我所知,我应该切换页面加载中的所有内容 我试图同时选择Page_PreInt和Page_Load中的css文件,但这两种方法都不起作用:C# 动态切换样式表,c#,css,asp.net,C#,Css,Asp.net,我的任务是把两页合并成一页。我使用ASP.NET。加载时,我必须选择一个.css,一个业务对象,并在asp:updatePanel中填充数据。两个站点都应该显示来自两个不同设备的日志 据我所知,我应该切换页面加载中的所有内容 我试图同时选择Page_PreInt和Page_Load中的css文件,但这两种方法都不起作用: protected void Page_PreInit(object sender, EventArgs e) { // seting the mas
protected void Page_PreInit(object sender, EventArgs e)
{
// seting the master page
switch (deviceOrTerminal)
{
case DeviceOrTerminalEnum.Device:
this.Master.MasterPageFile = "~/Device/Device.Master";
Session.Add("style", "/Theme/DeviceEventHistory.css");
lnkCSS.Attributes["href"] = "/Theme/DeviceEventHistory.css";
lnkCSS.Attributes["href"] = "~/Theme/DeviceEventHistory.css";
break;
case DeviceOrTerminalEnum.Terminal:
this.Master.MasterPageFile = "~/Terminal/TerminalDetail.Master";
Session.Add("style", "/Theme/TerminalEventHistory.css");
lnkCSS.Attributes["href"] = "/Theme/TerminalEventHistory.css";
lnkCSS.Attributes["href"] = "~/Theme/TerminalEventHistory.css";
break;
case DeviceOrTerminalEnum.None:
this.Master.MasterPageFile = "~/Main.Master";
Session.Add("style", "/Theme/NoneEventHistory.css");
lnkCSS.Attributes["href"] = "/EventHistory/Theme/NoneEventHistory.css";
lnkCSS.Attributes["href"] = "~/EventHistory/Theme/NoneEventHistory.css";
break;
}
}`
protected void Page_Load(object sender, EventArgs e)
{
CommandBarTop.TitleCaption = TitleCaption;
CommandBarGridTop.DisableAllButtons();
CommandBarGridBottom.DisableAllButtons();
CommandBarTop.DisableAllButtons();
CommandBarBottom.DisableAllButtons();
CommandBarBottom.SetSearchMode(eventHistoryBo.PermissionId);
CommandBarBottom.SearchClicked += CommandBar_SearchClicked;
CommandBarBottom.SearchButtonText = (String)GetLocalResourceObject("CommandBar.SearchButton");
CommandBarTop.SetSearchMode(eventHistoryBo.PermissionId);
CommandBarTop.SearchClicked += CommandBar_SearchClicked;
CommandBarTop.SearchButtonText = (String)GetLocalResourceObject("CommandBar.SearchButton");
String shortDatePattern = PreferredBrowserLanguage.DateTimeFormat.ShortDatePattern;
String shortTimePattern = PreferredBrowserLanguage.DateTimeFormat.ShortTimePattern;
txtEventTimeFrom.CalendarDateFormat = shortDatePattern + " " + shortTimePattern;
txtEventTimeTo.CalendarDateFormat = shortDatePattern + " " + shortTimePattern;
String jsValidatorName = "clientValidate";
Type jsType = GetType();
if (!Page.ClientScript.IsClientScriptBlockRegistered(jsValidatorName))
{
Initialize();
if (!Page.IsPostBack)
{
if ((!TMSPrincipal.IsPermissionOk(deviceBo.PermissionId, EnumPermissionType.View))
|| (!TMSPrincipal.IsPermissionOk(terminalBo.PermissionId, EnumPermissionType.View)))
{
throw new HttpException("Insufficient permissions to view details.");
}
switch (deviceOrTerminal)
{
case DeviceOrTerminalEnum.Device:
CommandBarTop.TitleCaption.Replace(CommandBarTop.TitleCaption.ToString(), "Device");
CommandBarGridTop.TitleCaption = "Device";
lnkCSS.Attributes["href"] = "/Theme/DeviceEventHistory.css";
lnkCSS.Attributes["href"] = "~/Theme/DeviceEventHistory.css";
break;
case DeviceOrTerminalEnum.Terminal:
CommandBarTop.TitleCaption.Replace(CommandBarTop.TitleCaption.ToString(), "Terminal");
CommandBarGridTop.TitleCaption = "Terimal";
lnkCSS.Attributes["href"] = "/Theme/TerminalEventHistory.css";
lnkCSS.Attributes["href"] = "~/Theme/TerminalEventHistory.css";
break;
case DeviceOrTerminalEnum.None:
CommandBarTop.TitleCaption.Replace(CommandBarTop.TitleCaption.ToString(), " ");
UserHints.Add(new UserHint(GetLocalResourceObject("Error_DeviceNorTerminal_Title.Text").ToString(), GetLocalResourceObject("Error_DeviceNorTerminal_Body.Text").ToString(), EnumUserHintType.Error));
lnkCSS.Attributes["href"] = "/EventHistory/Theme/NoneEventHistory.css";
lnkCSS.Attributes["href"] = "~/EventHistory/Theme/NoneEventHistory.css";
break;
}
txtEventTimeFrom.Text = DateTime.Now.Date.AddDays(-7).ToString("g");
txtEventTimeTo.Text = DateTime.Now.Date.AddDays(1).ToString("g");
FillData();
InitializeDropDownEventType();
}
}
}
我正在为这种ASP.NET编写一个月的程序(在我使用MVC和Razor之前),所以如果有任何问题,我都会心存感激。我知道有一些simmullar问题,但没有一个能解决我的问题。我做了一个简单的测试:
MasterA.Master
...
<h1>Master A</h1>
...
...
<h1>Master B</h1>
...
(Page.aspx
)
,在页面的PreInit
事件中动态更改母版页
现在,CSS
如果您要更改母版页,为什么不在母版页本身中编写正确的CSS文件,而您所需要做的只是切换母版页
如果只切换母版页,则可以使用视图切换器
编写脚本,因为WebForms在切换不同设备的母版页时会使用此脚本
在VisualStudio中启动一个全新的WebForms项目,并查看它们如何使用文件ViewSwitcher.ascx
为什么您要在案例的每个分支中设置href
两次?我认为这些都可以,但没有。看看这个问题
public partial class Page : System.Web.UI.Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
var letter = HttpContext.Current.Request["m"] != null ?
HttpContext.Current.Request["m"] : "A";
this.MasterPageFile = "~/Master" + letter + ".Master";
}
}
<%@ Page Title="" Language="C#"
MasterPageFile="~/MasterA.Master"
AutoEventWireup="true"
CodeBehind="Page.aspx.cs"
Inherits="WebAppWebForms.Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h3>Content</h3>
<p>Content of the page</p>
</asp:Content>