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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net子页面引用的母板页,关于title动态显示问题。相关的知识,希望对你有一定的参考价值。

跪求大神,我新闻子页面引用的母板页,关于子页面的Title,我想和我动态文章里的文章Title显示相同,请问该怎么办,求大神帮助。

参考技术A

在母板页里添加一个占位符“ContentPlaceHolder1”。就是ContentPlaceHolder控件。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
    
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>


在所有页面集成这个占位符就行了。

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<title>这里的标题从数据库获取</title>
</asp:Content>

追问

方法已试,不行。

追答

怎么不行,哪里出问题了


在每个页面的类里面定义一个受保护的类型。

public protected string title = "";

在PageLoad里面从数据库把标题查出来,给title赋值。


然后在每个页面的占位符里写上这样一句话就行了。

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<title> <%= title%>  </title>
</asp:Content>

参考技术B

你好!很高兴为你解答!

【1】、在母板页前台页面上:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=7" />
    <title><%=Title %></title>
</head>

【2】、在母板页后台cs上定义:

public string Title = string.Empty;

【3】、在子页面后台cs的载入事件Page_Load:

 MasterPage mp = this.Master as MasterPage;
 mp.Title = 数据库读取;

希望对你有所帮助,还望采纳,谢谢!!!

追问

数据库读取部分该怎么写,提取的是 新闻页面sqldatasource2数据库   数据库名称AHHXY , 表是News表,字段是“标题”字段,谢谢了。


读取自己写了,不知道对不对

,报错

能否加我QQ 交我下  QQ:四五零九五三六五六

追答

你好!

在子页面后台cs的载入事件Page_Load改为:

   MasterPage mp = this.Master as MasterPage;
   SqlConnection con=new SqlConnection("server=.;database=AHHXY;uid=sa;pwd=");
   con.Open();
   try
  
   SqlCommand com=new SqlCommand("select [标题] from News where id="+Request.QueryString["ID"].ToString(),con); 
   SqlDataReader read=com.ExecuteReader();
   if(read.Read())
     
    mp.Title=read["标题"].ToString();
    
   
  catch 

希望对你有所帮助,还望采纳,谢谢!!!
参考技术C 从工具箱拖一个ContentPlaceHolder控件到母板页,然后Title里面的内容从数据库获取就行了。

母板页 .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;
        }

以上是关于.net子页面引用的母板页,关于title动态显示问题。的主要内容,如果未能解决你的问题,请参考以下文章

母板页 .master

网页引用母板页,如何添加内容?

ASP.NETLayout使用详解

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

关于页面iframs的相互引用

thymeleaf引用公共页面