自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET網(wǎng)頁模板的母版資源訪問

開發(fā) 后端
本文向您介紹ASP.NET網(wǎng)頁模板的母版資源訪問,包括如何在內(nèi)容頁訪問母版頁的資源,通過舉例說明,不同的頁面在導航欄上應該有不同的指示。

本文介紹如何在ASP.NET網(wǎng)頁模版中對內(nèi)容頁訪問母版頁的資源,還是舉例說明,不同的頁面在導航欄上應該有不同的指示,比如當前頁面是 A 頁面,導航欄的 A 應該突出顯示。

母版資源頁代碼

  1. 〈%@ Master Language="C#" %〉  
  2. 〈!DOCTYPE html PUBLIC "-//W3C//DTD XHTML   
  3. 1.0 Transitional//EN" "http://www.w3.org/TR/  
  4. xhtml1/DTD/xhtml1-transitional.dtd"〉  
  5. 〈script runat="server"〉  
  6. public void SetCurNavItem(int itemIndex)  
  7. {  
  8. nav.Items[itemIndex].Attributes.CssStyle.  
  9. Add("color""#FF0000");  
  10. }  
  11. 〈/script〉  
  12. 〈html xmlns="http://www.w3.org/1999/xhtml" 〉  
  13. 〈head runat="server"〉  
  14. 〈title〉Untitled Page〈/title〉  
  15. 〈/head〉  
  16. 〈body〉  
  17. 〈form id="form1" runat="server"〉  
  18. 〈div〉  
  19.  
  20. 〈asp:ContentPlaceHolder id="m_header"   
  21. runat="server"〉  
  22. 〈asp:BulletedList ID="nav" runat="server"〉  
  23. 〈asp:ListItem Text="導航一"〉〈/asp:ListItem〉  
  24. 〈asp:ListItem Text="導航二"〉〈/asp:ListItem〉  
  25. 〈/asp:BulletedList〉  
  26. 〈/asp:ContentPlaceHolder〉  
  27.  
  28. 〈asp:ContentPlaceHolder ID="m_content"   
  29. runat="server"〉在  
  30. 〈/asp:ContentPlaceHolder〉  
  31.  
  32. 〈asp:ContentPlaceHolder ID="m_footer"   
  33. runat="server"〉  
  34. 〈p〉版權所有〈/p〉  
  35. 〈/asp:ContentPlaceHolder〉  
  36. 〈/div〉  
  37. 〈/form〉  
  38. 〈/body〉  
  39. 〈/html〉  

ASP.NET網(wǎng)頁模板的內(nèi)容頁代碼

  1. 〈%@PageLanguage="C#"MasterPageFile="  
  2. MasterPage1.master"Title="首頁"%〉  
  3. 〈scriptrunat="server"〉  
  4. protectedvoidPage_Load  
  5. (objectsender,EventArgse)  
  6. {  
  7. ((ASP.masterpage1_master)Master).  
  8. SetCurNavItem(0);  
  9. }  
  10. 〈/script〉  
  11. 〈asp:ContentID="content"runat="server" 
  12. ContentPlaceHolderID="m_content"〉  
  13. 〈p〉這里是首頁的內(nèi)容〈/p〉  
  14. 〈/asp:Content〉  

效果

效果

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

更好的方法

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

  1. 〈%@PageLanguage="C#"MasterPageFile="  
  2. MasterPage1.master"Title="首頁"%〉  
  3. 〈%@MasterTypeVirtualPath="MasterPage1.master"%〉  
  4. 〈scriptrunat="server"〉  
  5. protectedvoidPage_Load(objectsender,EventArgse)  
  6. {  
  7. Master.SetCurNavItem(0);  
  8. }  
  9. 〈/script〉  
  10. 〈asp:ContentID="content"runat="  
  11. server"ContentPlaceHolderID="m_content"〉  
  12. 〈p〉這里是首頁的內(nèi)容〈/p〉  
  13. 〈/asp:Content〉  

#p#

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

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

我們可以這樣做:

◆建立一個基類。

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

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


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

基類文件代碼:

  1. usingSystem;  
  2. usingSystem.Web.UI;  
  3. namespaceMasterPageNameSpace  
  4. {  
  5. publicabstractclassMasterPageClass:  
  6. MasterPage  
  7. {  
  8. publicabstractvoidSetCurNavItem  
  9. (intitemIndex);  
  10. }  
  11. }  

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

模板文件代碼:

  1. 〈%@MasterLanguage="C#"Src="m1.cs" 
  2. Inherits="MasterPageNameSpace.MasterPageClass"%〉  
  3. 〈!DOCTYPEhtmlPUBLIC"-//W3C//  
  4. DTDXHTML1.0Transitional//EN"  
  5. "http://www.w3.org/TR/xhtml1/DTD/  
  6. xhtml1-transitional.dtd"〉  
  7. 〈scriptrunat="server"〉  
  8. publicoverridevoidSetCurNavItem(intitemIndex)  
  9. {  
  10. nav.Items[itemIndex].Attributes.CssStyle.Add 
  11. ("color","#FF0000");  
  12. }  
  13. 〈/script〉  
  14. 〈htmlxmlns="http://www.w3.org/1999/xhtml"〉  
  15. 〈headrunat="server"〉  
  16. 〈title〉UntitledPage〈/title〉  
  17. 〈/head〉  
  18. 〈body〉  
  19. 〈formid="form1"runat="server"〉  
  20. 〈div〉  
  21.  
  22. 〈asp:ContentPlaceHolderid="m_header" 
  23. runat="server"〉  
  24. 〈asp:BulletedListID="nav"runat="server"〉  
  25. 〈asp:ListItemText="導航一"〉〈/asp:ListItem〉  
  26. 〈asp:ListItemText="導航二"〉〈/asp:ListItem〉  
  27. 〈/asp:BulletedList〉  
  28. 〈/asp:ContentPlaceHolder〉  
  29.  
  30. 〈asp:ContentPlaceHolderID="m_content"runat="server"〉  
  31. 在  
  32. 〈/asp:ContentPlaceHolder〉  
  33.  
  34. 〈asp:ContentPlaceHolderID="m_footer"runat="server"〉  
  35. 〈p〉版權所有〈/p〉  
  36. 〈/asp:ContentPlaceHolder〉  
  37. 〈/div〉  
  38. 〈/form〉  
  39. 〈/body〉  
  40. 〈/html〉  

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

ASP.NET網(wǎng)頁模板內(nèi)容文件代碼:

  1. 〈%@PageLanguage="C#"MasterPageFile="  
  2. MasterPage1.master"Title="首頁"%〉  
  3. 〈%@MasterTypeTypeName="  
  4. MasterPageNameSpace.MasterPageClass"%〉  
  5. 〈scriptrunat="server"〉  
  6. protectedvoidPage_Load(objectsender,EventArgse)  
  7. {  
  8. Master.SetCurNavItem(0);  
  9. }  
  10. 〈/script〉  
  11. 〈asp:ContentID="content"runat="  
  12. server"ContentPlaceHolderID="m_content"〉  
  13. 〈p〉這里是首頁的內(nèi)容〈/p〉  
  14. 〈/asp:Content〉  

總結

我們訪問模板文件中的資源有三種方法:

◆程序中利用強制類型對 Master 進行轉(zhuǎn)換;

◆利用 @ MasterType VirtualPath;

◆利用 @ MasterType TypeName。

【編輯推薦】

  1. ASP.NET跨頁提交功能詳解(1)
  2. 在ASP.NET中向數(shù)據(jù)庫批量插入數(shù)據(jù)
  3. ASP.NET用Post方式向網(wǎng)頁發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應用程序淺析
  5. ASP.NET中的HttpWorkerRequest對像
責任編輯:冰荷 來源: cftea
相關推薦

2009-12-14 17:50:45

ASP.NET 2.0

2009-07-27 16:11:01

ASP.NET網(wǎng)頁模板

2009-07-24 16:37:04

創(chuàng)建母版頁asp.net 2.0

2009-07-27 14:24:16

ASP.NET訪問權限

2012-05-04 15:54:16

ASP.NET

2009-07-20 17:12:17

ASP.NET訪問數(shù)據(jù)

2009-08-05 14:27:55

ASP.NET模板基本

2009-08-19 10:54:42

ASP.NET數(shù)據(jù)訪問

2009-07-29 16:15:03

asp.net在線學習

2009-08-07 15:24:16

ASP.NET模板控件

2009-07-31 10:34:41

ASP.NET抓取網(wǎng)頁

2009-07-27 15:19:54

2009-07-27 16:37:42

ASP.NET主機

2009-10-09 10:52:43

ASP.NET模板引擎

2009-08-04 10:17:55

ASP.NET SqlASP.NET數(shù)據(jù)訪問

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-02-20 09:19:56

AJAXASP.NETWeb Service
點贊
收藏

51CTO技術棧公眾號