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

本文关键字:代码 Literal 控件 cs HTML 动态 | 更新日期: 2023-09-27 18:21:12

我正试图从后端文件(.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/>";
}

预期结果:
bold
italic

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

编辑:
我打算做数据绑定,所以最后,它将是…

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

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

您需要将以下代码添加到代码隐藏文件中

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

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

这对你有用吗?

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