在做网站开发时有的网站的许多页面的结构是相同的比如百度的贴吧等..如果为每一个网页搭建结构会很麻烦这样我们就搭建一个母板来节省工作量
在添加新项目中添加母版页.master与使用母版页的Web窗体.aspx。打开母版页后我们会看见在模板页中有 <asp:ContentPlaceHolder ID="ContentPlaceHolder3" runat="server"></asp: ContentPlaceHolder>标记,标记间的为加载这个母版的page的内容而不是结构,在.aspx文件中也有相对应的标记<asp: Content ID ="Content3" ContentPlaceHolderID ="ContentPlaceHolder2" runat ="server">这是内容</asp: Content>在这之间写你想的内容。
这里需要注意如果母版page与普通page不再同一级文件夹下的话 哪么如果在page上写的还是HTML控件的话图片和超链接的路径就需要注意了 。
当我们加载页面时,由于普通页面和母版页不再同级文件夹下着样它们相对于image的路径是不相同,但是我们在模板页写的路径是相对于母版的这样加载页面时路径肯定是不正确的。解决把路径改成相对于页面的而不是母版(<img src="../images/image.jpg" />)或者改用服务端控件(<asp: HyperLink ID ="HyperLink1" runat ="server" NavigateUrl ="~/WebForm1.aspx">)。
如何在数据页面获取母版页的控件:在数据页面的protected void Page_LoadComplete(object sender, EventArgs e)事件中填写,
this.Master.FindControl("控件ID" )这个方法获取控件。
内容页面与母版页的Load事件的触发顺序是内容load()先于母版load()。这也说明当我们要更改母版页的控件属性时为什么用 Page_LoadComplete()而不是Page_Load()。