母板页 .master

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了母板页 .master相关的知识,希望对你有一定的参考价值。

新建-网站

母板页: 添加新项-母版页.master结尾
使用时,套母版页-添加新项-右下角选母版页
  可复制多个使用
<asp:ContentPlaceHolder id="head" runat="server"><%--内容预留位置,为子页面预留放样式表,  css js的位置--%>
    </asp:ContentPlaceHolder>


     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"><%--预留位置用于放网页内容--%>
        
        </asp:ContentPlaceHolder


路径::::: 4个  

    1:控件路径,image,超链接,指向页面

    第一步:在WUC.ascx页面上:
    <img  src="Image/暴风截图2015102133868160.jpg" runat="server"id="id1"/><%--变成服务器控件--%>

        在控件里加两项内容;runat="server" id="id1";将控件变成变成服务器控件,用户控件下这两项内容缺一不可,
        防止不是在同一级文件夹下找不到文件,服务器自动转换路径
        

    2:样式表中用户控件路径 利用外部样式表,不要写内联的样式表
第一步:添加新项-样式表
    将用的页面添加到head里面

     样式表页面CSS.css
      #aa {
    background-image:url(../Image/暴风截图2015102133868160.jpg) ;//  ../
        height:100px;
        width:100px

}
第二步:在WUC.ascx页面上:

    < div id="aa" ></div>

    

    3:外部资源路径 外部的js文件  ,需要调用函数来处理路径

第一步;添加新项-javascript文件
       JavaScript.js页面:
       alert("你好");

第二步:   WUC.ascx.cs:写函数

        public string ShowPath()
    {

        string path = "Script/JavaScript.js";
        path = ResolveClientUrl(path);//获取客户端浏览器可以使用的路径url
        return path;
    }
   
第三步:  WUC.ascx页面上:直接拖过控件

       <script src="<%=ShowPath()%>"></script>


    4:页面路径:用户控件按钮点击跳转页面
        用户控件按钮点击时跳转页面:将相对路径转换为绝对路径
                       ~ 在服务器上表示网站的根目录
        protected void Button1_Click(object sender, EventArgs e)
        {
          Response.Redirect("~/main.aspx");
        }


传值:

一:页面向用户控件传值:
        1.用FindControl()
        
         string s = TextBox1.Text;
        //1.找到母板页
        MP mp= this.Master as MP;
        //2.用FindCotrol()去找母板页中的控件
         TextBox txt = mp.FindControl("TextBox1") as TextBox;
         txt.Text = s;

     b:属性传值
第一步:用户控件里面写一个属性;
       public string Txt
    {
        get
        {
            return TextBox1.Text;
        }

        set
        {
            TextBox1.Text=value;
        }
    }

第二步:在页面按钮里写
     protected void Button1_Click(object sender, EventArgs e)
    {
       
        //WUC1.Txt = TextBox1.Text;//用页面上取值给用户控件
        TextBox1.Text = WUC1.Txt;//从用户控件里面取给页面


    }

第三步:页面控件按钮点击时:
     protected void Button1_Click(object sender, EventArgs e)
    {
       // 找到用户控件的属性
        WUC1.Txt = TextBox1.Text;
    }




BBBB2:用户控件向页面传值:
      a:用session传值:
第一步:在用户控件:
             protected void Button1_Click(object sender, EventArgs e)
        {
        
        Session["txt"] = TextBox1.Text;
         }
    


第二步:在页面上重写onloadcomplete()事件:在子类中对父类的方法的重写,
       防止数据延迟 override onloadcomplete()
        // 在页面加载完成后对页面家安在完成后对父类方法的重写
         protected override void OnLoadComplete(EventArgs e)
         {
             base.OnLoadComplete(e);

             if (Session["txt"] != null)
            {
            TextBox1.Text = Session["txt"].ToString();
            }
         }





建议用  b:委托或代理;指向方法的引用,引用指向方法,,好用但是难理解;只改变指向的方法即可 delegete

            Dog d=New Dog();d引用指向的是Dog类的对象
            string s="ssss";s指向的是字符串
            public void Show(Dog);引用指向方法,指向方法的引用

            1:定义一个类
            class Dog
            {


            public int Dog;
            public void walk();

            }
            2:声明一个dog对象
            Dog d;
            3:将该引用指向Dog
            
             d=New Dog();

            4:用该引用调对象的方法


     代理:指向方法的引用 和事件很像
    
         签名:返回类型  void,参数列表string s;

y        1:定义一个代理 //用户控件里面
             //加上delegate后,ShowDelegate不是原来的函数名而是代理类型名

             public delegate void ShowDelegate(string s);
        
        2:声明一个代理的引用 //用户控件里面

        // 前面加上public后在其他类里面可以用
             public ShowDelegate show;

        
        3:在具体页面上页面加载时3;将代理的引用指向签名匹配的(函数)方法; 可以和手动挂事件一样 ,
           += 可以挂很多事件,事件本质就是一个特殊的代理。可以指向很多方法只要签名一致就可以,
        
        show=new ShowDelegate(DO);

         protected void Page_Load(object sender, EventArgs e)
    {
         //找母版页
        MP mp = this.Master as MP;
        //给代理挂上方法
        mp.Show += GetText;
    }
        
        4:用代理调用方法 在用户控件button里面

         show("aa");

         protected void Button1_Click(object sender, EventArgs e)
    {
      

        //.调用Show方法
        string s = TextBox1.Text;
        Show(s);


        //4,用代理调用函数
        if (show != null)
        {
            show(TextBox1.Text);
        }

    }

         5:在实际页面写函数。签名必须和代理类型的一样
        public void Do(string s)
        {

        TextBox1.Text=A;
        }

以上是关于母板页 .master的主要内容,如果未能解决你的问题,请参考以下文章

先做了一个静态页面,布局兼容所有浏览器,将静态页面放入.net母版页中,布局就全乱了。

ASP.NETLayout使用详解

.net子页面引用的母板页,关于title动态显示问题。

django template模板 母板

asp.net网站管理工具遇到错误。请返回上一页并重试。还有母板页ContextPlaceHolder中存在的控件不能用等问

烦人,项目需要收回master分支的权限