使用Literal控件通过.cs代码动态HTML代码

时间:2014-09-09 00:19:38

标签: c# html asp.net webforms

我尝试从后端文件(.cs)生成HTML代码以生成.aspx中的输出。我无法弄清楚为什么当我不使用方法调用并直接使用Text =" HTML"时,文字控件与正确输出完全正常。但是,如果我使用方法调用Text ="<%#:methodCall()%>,则输出只是一个字符串,并且它没有给出正确的输出。

这就是我的意思:

直接文字版:

<asp:Literal ID="literal" Mode="PassThrough" runat="server" Text="<b>bold</b><br/><i>italic</i><br/>"/>

输出:
粗体斜体


方法调用版本:

<asp:Literal ID="literal" Mode="PassThrough" runat="server" Text="<%#: getDetails() %>"/>


输出:

<b>bold</b><br/><i>italic</i><br/>

方法是:

public string getDetails()
{
   return "<b>bold</b><br/><i>italic</i><br/>";
}

预期结果:
粗体
斜体

有人可以向我解释为什么会发生这种情况以及如何解决这个问题吗?

编辑:
我打算做数据绑定,所以最终会......

<%#: getDetails(string, string, string, string) %>

2 个答案:

答案 0 :(得分:0)

这对你有用吗?

<asp:Literal ID="literal" Mode="PassThrough" runat="server" Text="<%# Server.HtmlEncode(getDetails()) %>"/>

答案 1 :(得分:0)

您需要将以下代码添加到文件后面的代码

protected void Page_Load(object sender, EventArgs e)
    {
        this.DataBind(); 
    }

或者您可以在任何您想要文本的地方使用<% =getDetails() %>而不是使用文字控制