asp.net頁面head區動態設定全攻略

來源:互聯網
上載者:User
網頁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一樣。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.