在内容页中如何调用母版页上的内容大家想必都已经知道,这里我也不再啰嗦。我想介绍给大家的方法是如何在母版页中如何调用内容页的方法。
       母版页给我们带来了很多方便性,但也带来了一个问题:在设计母版页的时候,总会碰到需要在母版页中调用内容页的方法,但此时内容页尚未设计,如何调用呢?下面就让我用一个实例给大家讲解一下:
      母版页:MasterPage.master的页面代码如下:
<body>
    <form id="form1" runat="server">
    <table>
        <tr>
            <td>
                <asp:Button ID="CallContentMethod" runat="server" OnClick="CallContentMethod_Click"
                    Text="调用内容页方法" />
                <asp:Label ID="welcomeMessage" runat="server" Text="这里将显示内容页的欢迎信息"></asp:Label></td>
        </tr>
        <tr>
            <td>
                <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
                </asp:contentplaceholder>
            </td>
        </tr>
    </table>
    </form>
</body>
其中有一个按钮和一个文本,其中的文本用来显示内容页的欢迎信息,按钮用来调用内容页的方法,但此时内容页并不存在,那么按钮的单击事件代码如何写呢?
      这里我们需要引入一个页面基类的概念,想必大家都清楚;aspx页面只要求后台类是继承此Page类即可。所以我们先添加一个继承自Page的页面基类BasePage,然后让页面继承自我们BasePage并重写相关方法,利用运行时的动态性来解决此问题。相关代码如下:
BasePage.cs:
public class BasePage :Page
{
    /// <summary>
    /// 输出每个内容页的欢迎信息,内容页继承此类并重写此方法即可。此方法会由母版页自动调用
    /// </summary>
    public virtual string SayHello()
    {
        return "这是页面基类返回的欢迎信息!";
    }
}
母版页的后台代码如下:
    BasePage currentPage = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        currentPage = Page as BasePage;
    }
    protected void CallContentMethod_Click(object sender, EventArgs e)
    {
        if (currentPage != null)
        {
            welcomeMessage.Text = currentPage.SayHello();
        }
    }
此处母版页中定义一个成员变量指向BasePage,在PageLoad中将实际运行的页面进行转型,这样在按钮的单击事件中就可以调用BasePage定义的SayHello方法了。又由于此方法是虚方法,在运行时绑定具体方法,即可实现我们的要求。
下面是内容页的代码:
Default.aspx.cs:
//注意类一定要继承自自定义的基类,否则母版页中转型会失败
public partial class Template_Default : BasePage
//重写欢迎信息方法
    public override string SayHello()
    {
        return "这是来自内容页的欢迎信息!";
    }

通过以上的步骤,我们就可以轻松实现在母版页中调用内容页的方法。如果想自动调用,只需要在母版页的Page_Load方法中转型后直接调用相关方法即可。

如果大家有更好的方法欢迎一起讨论!!!

转载于:https://www.cnblogs.com/chenql/archive/2007/02/03/638614.html

母版页调用内容页的方法的简单实现相关推荐

  1. 访问母版页控件、属性、方法及母版页中调用内容页的方法

    首先,必须通过内容页中的MasterTye指令,对母版页实施强类型化,即在内容页代码头的设置中增加如下指令 <%@ MasterType VirtualPath="~/Master/M ...

  2. php 母版页,.NET_ASP.NET 2.0 中的创建母版页,  虽然母版页和内容页功能 - phpStudy...

    ASP.NET 2.0 中的创建母版页 虽然母版页和内容页功能强大,但是其创建和应用过程并不复杂.本节和下一节将以创建如图1所示示例为例,向读者详细介绍,使用Visual Stuido 2005创建母 ...

  3. 母版页和内容页的使用

    虽然母版页和内容页功能强大,但是其创建和应用过程并不复杂.本节和下一节将以创建如图 1 所示示例为例,向读者详细介绍,使用 Visual Stuido 2005 创建母版页和内容页的方法以及相关知识. ...

  4. 引用asp.net母版页后,母版页和内容页的页面事件执行顺序

    如下,经测试得到的执行步骤: 第01步.内容页的 Page_PreInit 第02步.母版页的 Page_Init 第03步.内容页的 Page_Init 第04步.内容页的 Page_InitCom ...

  5. 使用母版页时内容页如何使用css和javascript

    由于网站的主要频道页和列表页的头部和底部都是一样的,如果将每个页面放在单独的页面中,当头部和底部需要更改时维护量太大.于是想把头部和底部做成母版页,频道页和列表页的具体内容放到内容页中.这样当头和底需 ...

  6. asp.net C#母版页和内容页事件排版加载顺序生命周期

    asp.net C#母版页和内容页事件排版加载顺序生命周期 关于ASP页面Page_Load发生在事件之前而导致的问题已经喜闻乐见,对于问题的解释也很全面,但是如何解决问题则较少有人说明,我就再 简单 ...

  7. ASP.NET:母版页与内容页

    ASP.NET:验证控件 ASP.NET:母版页与内容页 ASP.NET:主题中的皮肤和样式表 一.使用多种方式为内容页加载母版页 默认情况下是给单个内容页指定一个母版页加载,当多个内容页需加载到同一 ...

  8. ASP母版页与内容页不同目录 链接问题

    由于母版页给网站的开发带来了很多的便利,但是同时也存在一个非常大的缺陷,就是母版页与内容页在不同目录下时,会出现应用js,css,图片等失效的问题,通过前面两篇文章基本解决了js.css.图片的问题, ...

  9. Asp.Net母版页和内容页运行机制

    Asp.Net母版页和内容页运行机制 来自森大科技官方博客  http://www.cnsendblog.com/index.php/?p=96 从上面的讲解中可以看出,单独的母版页是不能被用户所访问 ...

最新文章

  1. 淘宝服务端高并发分布式架构演进之路
  2. 关于HTML加密混淆、源码保护、代码安全,防止解压直接看源码
  3. rdd后面[]中的数字是啥意思
  4. ASP.NET Core Authentication and Authorization
  5. 自行车中的物理知识汇总
  6. Mac电脑共享“公共文件夹”以外的文件夹的设置教程
  7. 自从上了 Prometheus 监控,睡觉真香!
  8. JavaCV的摄像头实战之五:推流
  9. html5 页面刷新的代码,js刷新当前页面的代码
  10. [基础]tfcenter搭建个人服务器
  11. 【可视化】盒须图 散点图 柱状图 折线图 饼图
  12. PPT转换PDF后转成图片
  13. 一文读懂数据脱敏技术在智能汽车中的应用
  14. Attack State Slight Movement(攻击状态)
  15. oracle dbca没有,ORACLE 使用DBCA静默创建数据库
  16. 服务产品化,或许是中国软件的出路
  17. C语言实现 扫雷游戏 | 简单项目
  18. C语言在学习编程的作用并简单了解一下C语言
  19. 我司何晓磊续签立命馆大学的客座研究员
  20. directory index of “/data/“ is forbidden

热门文章

  1. Armijo-Goldstein和wolfe-power的matlab代码实现(转)
  2. 计算机系统 过程调用
  3. linux快速复制大量小文件方法
  4. Linux高性能网络:协程系列08-协程实现之调度器
  5. 20145237 《信息安全系统设计基础》第2周学习总结
  6. 让架构更简单,QCon上海2016热点前瞻
  7. mac更新java失败解决办法
  8. Grunt-cli的执行过程以及Grunt加载原理
  9. 正则表达式之零宽断言
  10. 自制Win7安装U盘!