asp.net页面head区动态设置全攻略
点击次数:30 次 发布日期:2008-11-26 12:50:39 作者:源代码网
|
源代码网推荐 方法1:asp能做到的,asp.net当然可以做到,只要你把整个页面都用Response.Write()写出来,没有什么不能自定义的,当然也可以"<%=某个成员%>"。但很明显,这样发挥不了.net的特点。 源代码网推荐 方法2:利用asp.net的特有属性:runat="server",给title设置一个id,然后让它成为服务器变量,那就可以设置其文本了。但这样出来的html里边也会带有id,看着实在不爽。 源代码网推荐 方法3:利用Literal控件,前台: <HEAD> 源代码网推荐 <asp:Literal ID="lt_title" Runat="server" /> 源代码网推荐 <asp:Literal ID="lt_keywords" Runat="server" /> 源代码网推荐 <asp:Literal ID="lt_descri" Runat="server" /> 源代码网推荐 </HEAD>后台: private void Page_Load(object sender, System.EventArgs e) 源代码网推荐 { 源代码网推荐 lt_title.Text = "<title>标题</title>"; 源代码网推荐 lt_keywords.Text = "<meta name="keywords" content="关键字">"; 源代码网推荐 lt_descri.Text = "<meta name="description" content="描述">"; 源代码网推荐 } 源代码网推荐 这样就基本达到完美了。 源代码网推荐 源代码网推荐 更进一步,我的页面用了不少用户控件,并且这些用户控件有层次,而决定页面title的,可能是某个用户控件中的子用户控件来决定的,而且用户控件的嵌套层次不固定。 那要怎么来动态设置呢? 源代码网推荐 源代码网推荐 首页,做一个用户控件的基类,并且给它增加1个public方法: 源代码网推荐 源代码网推荐 public void SetTitle(string title) 源代码网推荐 { 源代码网推荐 SetLiteralText("lt_title", string.Format("<title>{0}</title>", title)); 源代码网推荐 }再增加一个private方法: 源代码网推荐 private void SetLiteralText(string id, string text) 源代码网推荐 { 源代码网推荐 Literal lt = null; 源代码网推荐 Control ctrl = this; 源代码网推荐 do 源代码网推荐 { 源代码网推荐 ctrl = ctrl.Parent; 源代码网推荐 }while(ctrl != null && ctrl.GetType().FullName != "System.Web.UI.HtmlControls.HtmlForm" ); 源代码网推荐 源代码网推荐 if(ctrl != null) 源代码网推荐 { 源代码网推荐 lt = ctrl.FindControl(id) as Literal; 源代码网推荐 if(lt != null) 源代码网推荐 lt.Text = text; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 这样,你的用户控件只需要让它继承自这个基类,然后在你想设置页面的title时调用base.SetTitle("标题"),就简单的完成了任务。对于head区其它标记,原理和设置title一样。 源代码网推荐 源代码网推荐 http://javen.cnblogs.com/archive/2006/07/14/451116.html 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
