zoukankan      html  css  js  c++  java
  • 使用母版页

    使用母版页

    左直拳

    早在二年前使用ASPNET11的时候,面对许许多多风格、控件位置摆放非常相似的页面,总在做着拷贝、粘贴、修改的工作,虽然已经尽量使用用户控件,但还是有相当多重复的代码。我就想:“如果可以搞个自定义的页面基类,上面定好一些常用的样式、控件,以后创建新页就从基类派生该有多好”。

    可是一直没有实现该功能,或者说,是没有这样做过。人就是这样奇怪,明知道某件事是很好的,可总提不起精神,拿不出时间去做,仿佛被鬼迷了。这也是世界上有人富裕有人穷的原因吧。据说富人与穷人的区别在于,他们在闲暇时间都忙些什么。不付出,又怎么会有收获呢?

    道理谁都懂,实践起来就难。

    现在好了,可以使用ASPNET20提供的母版页。

    比如,一个网站的页面往往由

    页头:上面放LOGO,导航条之类

    页脚:什么关于、联系我们、版权信息

    菜单:放在左侧或右侧

    内容块:每个页面独有的内容

    这几块组成。这时可将页头、页脚、菜单放在母版页,然后每个页面绑定母版页,做到每个页面只专注于自己的内容块。

    稚嫩的雄鹰长出了翅膀从此可以飞过高山,幼小的老虎磨出了利爪往后能够扑杀猎物,新建一个页面呵,从今往后再也不用拷贝一个老页面,然后再修改!

    但也出现了一些小小的问题。

    1、是服务器控件或者凡是runat=server的控件,其ClientID在页面输出后,都跟在设计时不一样了。例如有个

    <input type="text" id="txtName" runat="server" />

    但输出后,却变成了

    <input type="text" id="ctl00_Main_txtName" />

    如果你原本在javascript里如下引用:document.getElementById("txtName");现在多半找不到了。可以沿用ASP的做法:

    document.getElementById("<%=txtName.ClientID%>");

    2、内容页要访问母版页上的控件不象同一页那么方便。

    需要用Page.Master.FindControl();的方式,例如,

    TextBox txt = (TextBox)Page.Master.FindControl(txtName);

    假如要访问的控件是用户控件,这样写

    MyCtrl myctrl = (MyCtrl)Page.Master.FindControl(MyCtrl1);

    多半会编译出错,说缺乏MyCtrl的定义。原因是该控件在母版页上声明:

    <%@ Register Src="myCtrl.ascx" TagName="myCtrl" TagPrefix="uc1" %>

    一般情况下在内容页就不用再声明了。但如果要访问它就不同,也要在内容页的头部加上这一句。并没有重复声明的麻烦。

    3、要支持在母版页上的控件事件怎么办?

    比如说,我要在内容页支持我自己写的用户控件MyCtrl(在母版页)OnClick事件该怎么办?总不能将代码写在母版页吧?

    别忘了,事件本质是委托,我们只要在内容页添加对该事件的委托就行了。

    以前1.1的时候,代码页面有Page_Init事件的代码,可2.0就不知道跑哪去了。幸而自己加上去也有效:

     protected void Page_Init(object sender, EventArgs e)

     {

      MyCtrl myctrl = (MyCtrl)Page.Master.FindControl(MyCtrl1);

      if (myctrl != null)

      {

           myCtrl.Click += new MyCtrl.ClickEventHandler(MyCtrl1_Click);

       }

    }

     
  • 相关阅读:
    【bzoj2882】工艺 后缀自动机+STL-map
    【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
    【bzoj1475】方格取数 网络流最小割
    【bzoj4825】[Hnoi2017]单旋 线段树+STL-set
    【bzoj4448】[Scoi2015]情报传递 主席树
    【bzoj1803】Spoj1487 Query on a tree III DFS序+主席树
    【bzoj2127】happiness 网络流最小割
    【bzoj2431】[HAOI2009]逆序对数列 dp
    【bzoj4245】[ONTAK2015]OR-XOR 贪心
    【bzoj4066】简单题 KD-tree
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258321.html
Copyright © 2011-2022 走看看