zoukankan      html  css  js  c++  java
  • asp.net 母版页的使用

    本文转自 http://whx.tzgt.gov.cn/newOperate/html/1/12/124/10711.html

    为了减少在网页设计时出现的变一页则动全站的问题,vs2003升级到vs2005后增加了母版的概念。   你可以把它想像成为“网页模版”,与之不同的是,再也不必每个页面都去更新了,修改一次,所有的网页都会改变,做到了一劳永逸。   下面先进行一个简单的母版使用演示:   1、首先打开visual studio 2005,新建一个asp.net网站,文件系统,C#。   2、在解决方案资源管理器中,右键新建一个新项:   3、选择母版页:   4、打开MasterPage.master,里面有一个contentplaceholder控件,注意不要控件里面写什么东西。   我们转到设计视图,在这个控件外面加上header和footer 两句文本。   5、保存后我们就可以用它来做其它页面了。有两种方法,1是在母版页任意位置右键,点击添加内容页;2 是在解决方案资源管理器上新建新项,在生成aspx页面时勾选“选择母版页”   6、选择相应的母版页   7、在新生成的页面源代码只有这几句:

    1. <%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"   CodeFile="Default2.aspx.cs"Inherits="Default2"Title="UntitledPage"%>
    2. <asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">
    3. </asp:Content>
      我们可以看到一个content控件,这个东西对应母版页的ContentPlaceHolder1控件,转换到视图页面:   8、其中页头和页脚的文字都是灰色的,我们只能在 content中进行编辑。   保存后访问default2.aspx这个页面,F5.,我们看到页面:

    2、嵌套母版应用 嵌套母版页其实是母版页功能的高级应用,就是在大的母版页中包含一个小的母版页。这里需要注意的是,不管母版页有无嵌套、或者有几个嵌套,整个页面构架中必须至少包含一个内容页,因为母版页本身是不能被用户访问到的。 以下是嵌套母版页应用的简略代码: 大母版页BigMasterPage.master:

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

    < !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">     < div>大母版页内容< /div>     < div>         < asp:contentplaceholder id="ContentPlaceHolder1" runat="server">         < /asp:contentplaceholder>     < /div>#p#分页标题#e#     < /form> < /body> < /html>

    大母版和简单应用时的一样,没有什么变动.

    小母版页SmallMasterPage.master:

    < %@ Master Language="C#" AutoEventWireup="true" CodeFile="SmallMasterPage.master.cs" Inherits="SmallMasterPage" MasterPageFile="~/MainMasterPage.master"%>     < asp:Content ID="SubContent" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">         < div>小母版内容< /div>         < div>             < asp:contentplaceholder id="ContentPlaceHolder2" runat="server">             < /asp:contentplaceholder>         < /div>     < /asp:Content>

    这里看来小母版其实是一个带有母版标记的特殊内容页而已,Content控件之外只允许存在文件头,和部分程序,拒绝存在html代码等.

    内容页:Content.aspx:

    < %@ Page Language="C#" MasterPageFile="~/SmallMasterPage.master" AutoEventWireup="true" CodeFile="Content.aspx.cs" Inherits="Content" Title="Untitled Page" %> < asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server"> 内容页内容 < /asp:Content>

    和简单应用时也一样,不过这里选用的母版是SmallMasterPage.master. 大家着重看蓝色部分哦.运行结果:

    3、访问母版页控件及属性 在进行程序设计的时候,我们可能需要在内容页中对母版页进行操控.要访问母版页的的控件或属性有以下几种方法:

    一、使用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>

    4、母版页应用范围配置 以上实例都是页面级母版页应用,只要在对应内容页页面头部声明或设置即可。 如果是程序级母版页应用,应在Web.config中作以下设置: < configuration>    < system.web>      < pages MasterPageFile="~/MasterPage.master" />    < /system.web> < /configuration> 屏蔽某个文件夹使用该母版方案,可以通过在该文件夹下放置不同的web.config文件来实现。 屏蔽某个文件使用该母版方案,可以通过设置.aspx页面头部来实现: < %@ Page Language="C#" MasterPageFile="~/OtherMasterPage.master" %> 如果不想使用母版,可以把MasterPageFile属性值留空即可。

    5.

    在母版页中使用javascript 时,使用javascript 获得对象, 比如页面现有一个TextBox控件 < asp:TextBox id="userName" runat="server"> 使用javascript var mm=document.all.userName; 报告的错误为对象为空或者对象不存在 查看生成的网页的源码,发现 ID 为userName 的TextBox 被解析为 < input name="_ctl0:_ctl0:DownStageMainContent:DownStagesubContent:userName" type="text" id="_ctl0__ctl0_DownStageMainContent_DownStagesubContent_userName" /> 原来加入母版页后会在服务器控件的前面自动添加一个字符串,在这里是_ctl0__ctl0_DownStageMainContent_DownStagesubContent 客户端的控件不受影响 如何获得控件对象呢? 解决方法1 document.getElementById('< %=userName.ClientID %>')

    解决方法2 < asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">      < script type="text/javascript">         function yanzheng()         {             var tt=document.getElementById("ctl00$ContentPlaceHolder1$mingzi");             tt.value=tt.value.replace(" ","");             if(tt.value=="")             {                 window.alert("用户名不能为空!");                 return false;             }             tt=document.getElementById("ctl00$ContentPlaceHolder1$xx");             tt.value=tt.value.replace(" ","");             if(tt.value=="")             {                 window.alert("密码不能为空!");                 return false;             }         }     < /script>     < asp:TextBox ID="mingzi" runat="server" MaxLength="10">< /asp:TextBox>     < asp:TextBox ID="xx" runat="server" MaxLength="10">< /asp:TextBox>     < input id="date" runat="server" maxlength="10" name="date" onclick="new Calendar().show(this);"         readonly="readonly" size="10" type="text" />     < asp:Button ID="SaveInfo" runat="server" Text="添加" CssClass="but"                     OnClientClick="return yanzheng()" />

    < /asp:Content>

  • 相关阅读:
    select、poll和epoll
    Linux 常用命令之文件和目录
    SmartPlant Review 帮助文档机翻做培训手册
    SmartPlant Foundation 基础教程 3.4 菜单栏
    SmartPlant Foundation 基础教程 3.3 标题栏
    SmartPlant Foundation 基础教程 3.2 界面布局
    SmartPlant Foundation 基础教程 3.1 DTC登陆界面
    SmartPlant Foundation 基础教程 1.4 SPF架构
    SmartPlant Foundation 基础教程 1.3 SPF其他功能
    SmartPlant Foundation 基础教程 1.2 SPF集成设计功能
  • 原文地址:https://www.cnblogs.com/oldkingsir/p/2365653.html
Copyright © 2011-2022 走看看