转义asp.net中的内联代码块

本文关键字:代码 asp net 转义 | 更新日期: 2023-09-27 18:11:27

我的网站上有以下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的新手,我不能找出正确的语法来让它正确工作。我需要做些什么来获得内联代码块工作正确?

转义asp.net中的内联代码块

在服务器端运行控件并在那里赋值:

    <meta name="keywords" id="keywords" runat="server" />
    <meta name="description" id="desc" runat="server" />
    keywords.Attributes("content") = Keywords;
    desc.Attributes("content") = Description;

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

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

在code-behind:

中发出DataBind()方法
 if(!IsPostBack)
    DataBind();