在asp.net中转义内联代码块?

时间:2011-10-14 10:01:12

标签: c# asp.net

我的网站上有以下HTML:

<meta name="keywords" content="<%=Keywords%>"/>
<meta name="description" content="<%=Description%>"/>

这是我网站的母版页。在母版页背后的代码中,我有:

    private String _description = "A default description for my site";
    public String Description
    {
        get { return _description; }
        set { _description = value; }
    }

    private String _keywords = "my Site my Company keywords ";
    public String Keywords
    {
        get {return _keywords; }
        set { _keywords = value; }
    }

我的想法是,我网站上的所有网页都会有默认的描述/关键字,除非我需要将它们设置为特定网页上的其他内容(使用Master.Description = "whatever")。

但是,我遇到了一些问题:内联代码块删除的左括号在生成的HTML中被转义,因此代码块不起作用。以下是为我的页面生成的html的摘录:

<meta name="keywords" content="&lt;%=Keywords%>" /><meta name="description" content="&lt;%=Description%>" />

我习惯使用C#,但我是asp.net的新手,我无法找到正确的语法来使其正常工作。我需要做些什么才能使内联代码块正常工作?

2 个答案:

答案 0 :(得分:1)

运行控制服务器端并在其中分配值:

    <meta name="keywords" id="keywords" runat="server" />
    <meta name="description" id="desc" runat="server" />

    keywords.Attributes("content") = Keywords;
    desc.Attributes("content") = Description;

答案 1 :(得分:0)

使用简单/单一绑定表达。

<meta name="keywords" content="<%# Keywords%>"/>
<meta name="description" content="<%# Description%>"/>

在代码隐藏中发布DataBind()方法:

 if(!IsPostBack)
    DataBind();