ASP.NET:主版頁面與內容頁__.net

來源:互聯網
上載者:User
  ASP.NET:驗證控制項 ASP.NET:主版頁面與內容頁 ASP.NET:主題中的皮膚和樣式表

 一、使用多種方式為內容頁載入主版頁面

預設情況下是給單個內容頁指定一個主版頁面載入,當多個內容頁需載入到同一個主版頁面時,我們可以通過設定檔為多個內容頁批量載入主版頁面,另外,還可以在PreInit事件中動態載入主版頁面。

1、為單個內容頁載入主版頁面時,自動在內容頁的Page指令裡加上MasterPageFile屬性
<%@ PageTitle=""Language="C#"MasterPageFile="~/MasterPage/Site.Master" ……%>

2、為多個內容頁批量載入主版頁面時,在設定檔裡添加MasterPageFile屬性
<configuration>
  <system.web>
    <pages masterPageFile="~/MasterPage/Site.Master"/>
  </system.web>
</configuration>
此時,設定檔目錄下的所有內容頁都會批量載入該主版頁面,普通頁面會被主版頁面忽略,但要記得去掉內容頁裡Page指令的MasterPageFile屬性,否則會重寫設定檔裡的MasterPage屬性。

3、PreInit事件中動態載入主版頁面
主版頁面的載入在PreInit事件中,可以使用如下代碼動態載入,
 protected void Page_PreInit(objectsender,EventArgs e)
{
    MasterPageFile = "~/MasterPage/Site.Master";
}

 

二、如何在內容頁中修改關聯主版頁面的內容

很多時候多個內容頁載入同一個主版頁面,為了使各個內容頁中載入的同一個主版頁面內容有所不同,我們需要修改合并在內容頁中的主版頁面內容。

1、修改Title標籤屬性
當主版頁面的head標籤包含Runat=”Server”屬性時,可以修改內容頁的title標籤屬性,使其不顯示主版頁面的預設title,
方法一是通過內容頁前台設定的Page指令的Title屬性,
<%@ Page Title="前台設定內容頁標題"Language="C#" AutoEventWireup="true" ……%>
方法二是通過內容頁後台設定Page.Header.Title 的值,
Page.Header.Title = "編程改變內容頁標題";

2、修改Head標籤屬性
當主版頁面的head標籤包含Runat=”Server”屬性時,我們可以通過後台代碼修改head標籤包含的標籤屬性,並可以為head標籤動態添加指定的標籤,如“meta”標籤;代碼中Page.header返回的是HtmlHead對象,代表head標籤,HtmlMeta對象代表Meta標籤。
using System.Web.UI.HtmlControls;
……
……
protected void Page_Load(objectsender,EventArgs e)
{
    //修改head標籤中的title標籤屬性
    Page.Header.Title = "編程改變內容頁標題";
    //修改head標籤包含的其它標籤屬性,間接修改了頁面背景顏色
    Style myStyle = new Style();
    myStyle.BackColor = System.Drawing.Color.Red;
    Page.Header.StyleSheet.CreateStyleRule(myStyle, null,"html");
    //添加新標籤meta到head標籤中
    HtmlMeta metaKeywords = new HtmlMeta();
    metaKeywords.Name = "KEYWORDS";
    metaKeywords.Content = "asp.net,c#";
    HtmlHead head = Page.Header;
    head.Controls.Add(metaKeywords);
}

3、修改其它伺服器控制項屬性
A、直接修改法:
通過ID尋找主版頁面控制項,((Label)Master.FindControl("Label1")).Text ="內容頁";
B、間接修改法:
先在主版頁面中將需要修改的控制項屬性包裝成公開屬性,
public string BodyTitle
{
    get{return this.Label1.Text;}
    set{ this.Label1.Text =value;}
}
然後在內容頁中轉換主版頁面為特定的主版頁面類型,
<%@ MasterTypeVirtualPath="~/masterpage/MasterPage.master"%>
最後在內容頁中調用主版頁面公開的屬性,設定其值,Master.BodyTitle = "內容頁";

 

三、謹慎使用主版頁面中控制項的相關URL屬性

主版頁面中可以包含用戶端控制項和伺服器端控制項,各個內容頁與之合并時,其相關的URL屬性需解析為當前內容頁對應可用的URL。

1、當使用用戶端控制項相關URL屬性時,需要使用Page.ResolveUrl(“相對於整個虛擬目錄的相對路徑”)方法解析為當前內容頁對應可用的URL,
如<img src="logo.gif"alt=""/>需要修改為<imgsrc="<%=Page.ResolveUrl("~/MasterPage/logo.gif")%>"alt=""/>,否則不能夠正確顯示;

2、當使用伺服器端控制項相關URL屬性時,自動解析為當前內容頁對應可用的URL,
如<asp:ImageID="Image1"runat="server" ImageUrl="~/MasterPage/logo.gif" />

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.