搜索
简帛阁>技术文章>asp.net页如何获取母版页控件

asp.net页如何获取母版页控件

获取母版页的相关内容有两种方法

1 通过findcontrol找控件ID
需要在此事件中~因为Page_load中时是先内容页加载然后才是母版页加载
    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        Label2.Text = "现在时间是" + (Master.FindControl("Label1") as Label).Text;
        if (Request.QueryString["id"] == "dy")
        {
            (Master.FindControl("Image1") as Image).ImageUrl = "~/Images/ml0069.jpg";
        }
    }

2 通过强引用

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<%@ MasterType VirtualPath="~/MasterPage.master" %>

然后可以在母版页中定义公共属性或方法
public string GetUserName()
    {
        return Page.User.Identity.Name;
    }
在内容页中调用
Label1.Text = "欢迎光临" + Master.GetUserName();




一、使用FindControl方法获取母版页控件的引用
利用内容页page对象的Master公共属性,我们可以实现对关联母版页的引用。进而使用母版页的FindControl方法来实现对母版页控件的访问。
母版页MasterPage.master:

< %@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="MasterPage1" %>

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server">
    < title>母版页< /title>
< /head>
< body>
    < form id="form1" runat="server">
    < asp:Label runat="server" ID="masterlabel">母版页的内容< /asp:Label>
    < div>
        < asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        < /asp:contentplaceholder>
    < /div>
    < /form>
< /body>
< /html>

内容页Content1.aspx:

< %@ Page Language="C#" MasterPageFile="~/MasterPage1.master" AutoEventWireup="true" CodeFile="content1.aspx.cs" Inherits="content1" Title="Untitled Page" %>
< script runat="server">
    void Page_LoadComplete(Object sender, EventArgs e)
    {
        contentlabel.Text = (Master.FindControl("masterlabel") as Label).Text;
    }
< /script>
< asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
< asp:Label ID="contentlabel" runat="server">这里将显示母版页masterlabel控件的内容。< /asp:Label>
< /asp:Content>
其中,“Page_LoadComplete”是内容页面加载完成时触发的一个事件。
运行结果:

二、使用MasterType指令获取母版页控件的引用
相对于上面的FindControl方法而言,MasterType显得很直接。通过使用MasterType,可以创建与母版页的强类型引用。

将FindControl方法例子中的MasterPage.master更改如下:

< %@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="MasterPage1" %>
< script runat="server">
    public Label MasterPageLabel//注意:将母版页label控件强类型化,方便内容页访问。对母版页属性的访问也使用该方法。
    {
        get#p#分页标题#e#
        {
            return masterlabel;
        }
        set
        {
            masterlabel = value;
        }
    }
< /script>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

< html xmlns="http://www.w3.org/1999/xhtml" >
< head runat="server">
    < title>母版页< /title>
< /head>
< body>
    < form id="form1" runat="server">
    < asp:Label runat="server" ID="masterlabel">母版页的内容< /asp:Label>
    < div>
        < asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        < /asp:contentplaceholder>
    < /div>
    < /form>
< /body>
< /html>

将FindControl方法例子中的Content1.aspx更改如下:

< %@ Page Language="C#" MasterPageFile="~/MasterPage1.master" AutoEventWireup="true" CodeFile="content1.aspx.cs" Inherits="content1" Title="Untitled Page" %>
< %@ MasterType VirtualPath="~/MasterPage1.master" %>
< script runat="server">
    new void Page_Load(Object sender, EventArgs e)
    {
        contentlabel.Text = Master.MasterPageLabel.Text;
    }
< /script>
< asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
< asp:Label ID="contentlabel" runat="server">这里将显示母版页masterlabel控件的内容。< /asp:Label>
< /asp:Content>

获取母版的相关内容有两种方法1通过findcontrol找控件ID需要在此事件中~因为Page_load中时是先内容加载然后才是母版加载protectedvoidPage_LoadComple
Site1Master<%@MasterLanguageCAutoEventWireuptrueCodeBehindSite1mastercsInheritsplat_WeiMedSysCont
添加一个母版,使用<asp:ContentPlaceHolder>挖坑,新建的母版已经自动设置了两个ContentPlaceHolder创建使用母版的具体页面,WebSite是新建
许多情况下,我们需要根据项目的运行情况,在页面运行时才决定使用哪个母版。例如在企业管理系统中,我们要求公司的某个部门需要使用一个母版,而其他部门则使用另外一个母版。显然,这时候前面母版调用方
在进行ASPNET开发时,不能直接将ASPNET主题应用于母版,如果向@Master指令添加一个主题属性,则页面在运行时会引发错误。但是,主题在以下情况中会应用于母版。1、如果主题是在内容内定义
ASP但另一个突出的问题是使用母版后,每个内容页中没有了标记,因为这都在母版中有了,而这对修改标题、加载ASPNET中使用母版后统一网页标题,那这篇就来说说如何加载与ASPNET中使用母版页后
本文实例讲述了ASPNet巧用窗体母版的方法。分享给大家供大家参考。具体分析如下:背景:每个网页的基本框架结构类似:浏览网站的时候会发现,好多网站中,每个网页的基本框架都是一样的,比如,最上面都是
板页是做什么的?利用模板可以方便快捷的创建统一风格的ASPNET网站,并且容易管理和维护,提高了效率。模板为网页定义所需要的外观和标准,在母版的基础上创建包含显示内容的各个内容。当用户请求内容
spNet母版的相关知识母版的使用与普通页面类似,可以在其中放置文件或者图形、任何的HTML控件和Web控件,后置代码等。母版的扩展名以master结尾,不能被浏览器直接查看。母版必须在被其
虽然母版和内容功能强大,但是其创建和应用过程并不复杂。本节和下一节将以创建如图1所示示例为例,向读者详细介绍,使用VisualStuido2005创建母版和内容的方法以及相关知识。本节的重点是