2017-09-11 12 views
0

私の仕事は2つのページを1つにマージすることです。私はASP.NETで動作します。読み込み中は、.cssとビジネスオブジェクトを選択し、asp:updatePanelでデータを入力する必要があります。両方のサイトは、2つの異なるデバイスからのログを表示する必要があります。スタイルシートを動的に切り替える

私が理解するように、私はPage_Loadのすべてを切り替える必要があります。

私は同じ時間でPage_PreIntとのPage_LoadでCSSファイルを選択しようとした、およびそれらのどちらも働いた:

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(); 
      } 
     } 
    } 

私は私が働いていた(前の1ヶ月間、ASP.NETのこの種のプログラミングをしていますMVCとRazorを使用しているので)、私はどんなサービスにも感謝しています。私はいくつかの疑似質問があることを知っていますが、それらのどれも私の問題を解決しません。

+0

を使用して、そのタスクを達成する方法をVisual Studioで、と見ます? – Jamiec

+0

私はそれらがうまくいくと思ったが、didntだった。 –

+0

この質問をご覧くださいhttps://stackoverflow.com/questions/19023923/how-to-render-css-conditionally-in-page –

答えて

1

私は簡単なテストでした:

MasterA.Master

... 
<h1>Master A</h1> 
... 

MasterB.Master

... 
<h1>Master B</h1> 
... 

Page.aspx

を3210

Page.aspx.cs

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.aspx

<%@ 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> 

と私はこれだ:だからあなたは、docs mentionとして、動的でマスターページを変更することができます

をページのPreInitイベント。今

、CSS ...

マスターページを変更する場合は、なぜマスターページ自体に正しいCSSファイルを作成していない、とすべてを行う必要があるだけでマスターを切り替えますページ?

そしてあなただけ、あなたはそれが異なるデバイスのためのmasterPagesを切り替えるときにWebフォームを使用するものだとしてViewSwitcherを使用して、スクリプトにそれをできたマスターページを切り替えている場合...

火災アップブランドの新しいWebフォームプロジェクトを彼らはなぜあなたは `case`の各支店で二度` href`を設定しているファイルViewSwitcher.ascx

関連する問題