溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源

發布時間:2021-12-06 13:39:38 來源:億速云 閱讀:435 作者:iii 欄目:編程語言

這篇文章主要介紹“如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源”,在日常操作中,相信很多人在如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

母版資源頁代碼

〈%@ Master Language="C#" %〉  〈!DOCTYPE html PUBLIC "-//W3C//DTD XHTML   1.0 Transitional//EN" "http://www.w3.org/TR/  xhtml1/DTD/xhtml1-transitional.dtd"〉  〈script runat="server"〉  public void SetCurNavItem(int itemIndex)  {  nav.Items[itemIndex].Attributes.CssStyle.  Add("color", "#FF0000");  }  〈/script〉  〈html xmlns="http://www.w3.org/1999/xhtml" 〉  〈head runat="server"〉  〈title〉Untitled Page〈/title〉  〈/head〉  〈body〉  〈form id="form1" runat="server"〉  〈div〉   〈asp:ContentPlaceHolder id="m_header"   runat="server"〉  〈asp:BulletedList ID="nav" runat="server"〉  〈asp:ListItem Text="導航一"〉〈/asp:ListItem〉  〈asp:ListItem Text="導航二"〉〈/asp:ListItem〉  〈/asp:BulletedList〉  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolder ID="m_content"   runat="server"〉在  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolder ID="m_footer"   runat="server"〉  〈p〉版權所有〈/p〉  〈/asp:ContentPlaceHolder〉  〈/div〉  〈/form〉  〈/body〉  〈/html〉

ASP.NET網頁模板的內容頁代碼

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首頁"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load  (objectsender,EventArgse)  {  ((ASP.masterpage1_master)Master).  SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="server" ContentPlaceHolderID="m_content"〉  〈p〉這里是首頁的內容〈/p〉  〈/asp:Content〉

效果

如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源

可以看到,導航欄的***項突出顯示了。

更好的方法

ASP.masterpage1_master 是強制類型轉換,這樣使用起來似乎不是很方便,因為每次使用 Master 的地方都要重復地寫這些代碼,我們可以利用 MasterType 指令來實現。

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首頁"%〉  〈%@MasterTypeVirtualPath="MasterPage1.master"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load(objectsender,EventArgse)  {  Master.SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="  server"ContentPlaceHolderID="m_content"〉  〈p〉這里是首頁的內容〈/p〉  〈/asp:Content〉

在上一頁已經介紹過ASP.NET網頁模板訪問母版資源的兩種方法,其中第二種方法使用簡單快捷,但在某些情況下同樣顯得無能為力。

比如:一個頁面需要三種布局風格,這可能就需要三個模板,由訪問者決定使用哪一個模板,也就是說在頁面開發的時候,還不知道將使用哪一個模板,使用 @ MasterType VirtualPath 也就無法確定 MasterPage 的類型。

我們可以這樣做:

◆建立一個基類。

◆各個模板頁派生自這個基類。

◆內容頁通過 MasterPageFile 確定使用哪個模板,通過 @ MasterType TypeName 來使用基類類型處理這些模板的資源。


具體如下(只演示一個模板文件代碼):

基類文件代碼:

usingSystem;  usingSystem.Web.UI;  namespaceMasterPageNameSpace  {  publicabstractclassMasterPageClass:  MasterPage  {  publicabstractvoidSetCurNavItem  (intitemIndex);  }  }

注意使用的名稱空間和類及方法的修飾限定符。

模板文件代碼:

〈%@MasterLanguage="C#"Src="m1.cs" Inherits="MasterPageNameSpace.MasterPageClass"%〉  〈!DOCTYPEhtmlPUBLIC"-//W3C//  DTDXHTML1.0Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/  xhtml1-transitional.dtd"〉  〈scriptrunat="server"〉  publicoverridevoidSetCurNavItem(intitemIndex)  {  nav.Items[itemIndex].Attributes.CssStyle.Add ("color","#FF0000");  }  〈/script〉  〈htmlxmlns="http://www.w3.org/1999/xhtml"〉  〈headrunat="server"〉  〈title〉UntitledPage〈/title〉  〈/head〉  〈body〉  〈formid="form1"runat="server"〉  〈div〉   〈asp:ContentPlaceHolderid="m_header" runat="server"〉  〈asp:BulletedListID="nav"runat="server"〉  〈asp:ListItemText="導航一"〉〈/asp:ListItem〉  〈asp:ListItemText="導航二"〉〈/asp:ListItem〉  〈/asp:BulletedList〉  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolderID="m_content"runat="server"〉  在  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolderID="m_footer"runat="server"〉  〈p〉版權所有〈/p〉  〈/asp:ContentPlaceHolder〉  〈/div〉  〈/form〉  〈/body〉  〈/html〉

我們也可以通過 CSC 把基類文件編譯成 DLL 放在 bin 目錄下,或者將 .cs 文件放在 App_Code 目錄下,然后指令中省略 Src。

ASP.NET網頁模板內容文件代碼:

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首頁"%〉  〈%@MasterTypeTypeName="  MasterPageNameSpace.MasterPageClass"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load(objectsender,EventArgse)  {  Master.SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="  server"ContentPlaceHolderID="m_content"〉  〈p〉這里是首頁的內容〈/p〉  〈/asp:Content〉

到此,關于“如何在ASP.NET網頁模版中對內容頁訪問母版頁的資源”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女