posts - 2,  comments - 8,  trackbacks - 1
网页head区,不能用普通控件,但它有时又很重要,比如title、keywords、description,可能每个页面都不同,那么怎么样才能根据内容动态设置它们呢?
方法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一样。
posted on 2006-07-14 23:43 javen 阅读(293) 评论(3)  编辑 收藏 网摘

FeedBack:
2006-07-15 08:05 | 垃圾猪      
啊,无语
  回复  引用  查看    
2006-09-11 22:44 | wf [未注册用户]
更进一步,不能用
  回复  引用    
2006-09-11 22:45 | wf [未注册用户]
更进一步不能用
  回复  引用    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接:
 
交流编程技巧,敬请访问:http://www.best-code.com

<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

搜索

 

常用链接

留言簿

随笔档案

最新评论

阅读排行榜

评论排行榜