.net子页面引用的母板页,关于title动态显示问题。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net子页面引用的母板页,关于title动态显示问题。相关的知识,希望对你有一定的参考价值。
跪求大神,我新闻子页面引用的母板页,关于子页面的Title,我想和我动态文章里的文章Title显示相同,请问该怎么办,求大神帮助。
参考技术A在母板页里添加一个占位符“ContentPlaceHolder1”。就是ContentPlaceHolder控件。
<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】、在母板页前台页面上:
<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改为:
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动态显示问题。的主要内容,如果未能解决你的问题,请参考以下文章
asp.net网站管理工具遇到错误。请返回上一页并重试。还有母板页ContextPlaceHolder中存在的控件不能用等问