使用母版页
左直拳
早在二年前使用ASP。NET1。1的时候,面对许许多多风格、控件位置摆放非常相似的页面,总在做着拷贝、粘贴、修改的工作,虽然已经尽量使用用户控件,但还是有相当多重复的代码。我就想:“如果可以搞个自定义的页面基类,上面定好一些常用的样式、控件,以后创建新页就从基类派生该有多好”。
可是一直没有实现该功能,或者说,是没有这样做过。人就是这样奇怪,明知道某件事是很好的,可总提不起精神,拿不出时间去做,仿佛被鬼迷了。这也是世界上有人富裕有人穷的原因吧。据说富人与穷人的区别在于,他们在闲暇时间都忙些什么。不付出,又怎么会有收获呢?
道理谁都懂,实践起来就难。
现在好了,可以使用ASP。NET2。0提供的母版页。
比如,一个网站的页面往往由
页头:上面放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(“MyCtrl<chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">1<span style='FONT-FAMILY: "Times New Roman"; mso-ascii-font-family: 新宋体'>”</span></chmetcnv>);
多半会编译出错,说缺乏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(“MyCtrl<chmetcnv unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">1<span style='FONT-FAMILY: "Times New Roman"; mso-ascii-font-family: 新宋体'>”</span></chmetcnv>);
if (myctrl != null)
{
myCtrl.Click += new MyCtrl.ClickEventHandler(MyCtrl1_Click);
}
}
分享到:
相关推荐
母版页 的 使用母版页 的 使用母版页 的 使用
一个visual studio 2015中关于母版页(masterpage)的例子,包括了母版页的创建使用,和套用母版页的其他页面的例子
本实例介绍了在ASP.NET的网站开发中,如何使用母版页\主题,实现网站风格切换,并通过profile实现用户状态的持久化保存!
使用母版页面一个简单的网站
本实训应完成以下任务: 在 Microsoft Visual Web Developer 中创建母版页。创建一个 ASP.NET 页,此页包含要在母版页中显示的内容。运行母版页以显示不同的内容。
9.1 母版页概述 162 9.2 母版页的创建 162 9.3 母版页的使用 164 9.3.1 在内容页中使用母版页 164 9.3.2 内容页和母版页的交互 166 9.3.3 母版页的嵌套 167 9.4 常见问题 169 ...9.4.2 母版页使用频繁吗 170
ASP.NET 2.0创建母版页引来的麻烦-js无用
ASP.net制作母版页的使用,教会如何使用母版页.
原来在频道页和列表页中有其各自的css引入和一些javascript函数,当使用母版页时,放在内容页中这些css样式和javascript函数怎么处理呢?因为大家知道,使用母版页的内容页是不能包含<head></head>标记...
详细介绍如何用smarty实现php母版页,里面有实例代码
母版页 网站 导航
母版页的使用方法包括母版页值传递等等母版页的使用方法包括母版页值传递等等母版页的使用方法包括母版页值传递等等
Web控件和母版页Web控件和母版页Web控件和母版页Web控件和母版页Web控件和母版页Web控件和母版页Web控件和母版页
简单介绍:母版页(模板页) 2,为什么要使用母版页,它的优、缺点是什么? 3,在哪些地方需要使用到母版页? 4,重点介绍 引申: 框架集FrameSet 母版页的使用
天轰穿系列教程之-60MasterPage母版页创建 天轰穿系列教程之-60MasterPage母版页创建 天轰穿系列教程之-60MasterPage母版页创建 天轰穿系列教程之-60MasterPage母版页创建 天轰穿系列教程之-60MasterPage母版页创建 ...
内容页通过母版页与子母版页通信示例源码,附加动态加载导航菜单功能及头部图片切换功能
对母版页使用css与javascript
引用asp.net母版页后,母版页和内容页的页面事件执行顺序引用asp.net母版页后,母版页和内容页的页面事件执行顺序
asp.net 嵌套母版页(实例演示) 包含有母版页、嵌套母版页、2个内容页可以直观的看到嵌套母版页应用的效果。
asp.net2.0母版页技术源文件 asp.net2.0母版页技术源文件 asp.net2.0母版页技术源文件