ASP.NET<;%#Eval(“Statement”)%>;删除语句中的HTML字符串

本文关键字:语句 删除 gt HTML 字符串 %#Eval lt NET ASP Statement | 更新日期: 2023-09-27 18:20:44

我正在尝试从Azure存储表动态填充ASP.NET网页中的表,我想要包含的功能之一是根据元素的值更改文本的颜色。

我使用的是一个DataList对象,它调用GetEntries()方法来获取要显示的所有对象的列表。

表格的每个单元格中的文本都使用动态显示

<%# Eval("VariableName") %> 

因此,我尝试通过对GetEntries()方法中的每个对象执行以下操作来更改文本的颜色:

if (condition) 
   VariableName = "<font color='"red'">" + VariableName + "</font>";
else
   // ...

当我运行程序时,文本仍然是黑色的,当我查看源代码时,<font color="red">Bob</font仅为Bob

使用Eval时HTML是否被剥离?

如果是,是否有一种有效的方法可以根据值更改文本颜色?

谢谢!

ASP.NET<;%#Eval(“Statement”)%>;删除语句中的HTML字符串

要渲染为html,可以尝试以下操作:

<asp:Literal Text='<%# Eval("VariableName") %>' Mode="PassThrough" runat="server" />

这需要你在VariableName中有html(带有颜色信息),这可能不太好看。

备选方案1:

但如果你能添加一个公共属性,比如VariableColor(并保持VariableName不变),那就更好了:

public Color VariableColor
{
    get
    {
        return <condition>? Color.Red : Color.Empty;
    }
}

并像这样使用:

<asp:Label Text='<%# Eval("VariableName") %>' ForeColor='<%# Eval("VariableColor") %>' runat="Server" />

备选方案2:

更好的方法是创建一个公共布尔属性(比如IsDangerous)来评估条件:

public bool IsDangerous
{
    get
    {
        return <condition>;
    }
}

并像这样使用:

<asp:Label Text='<%# Eval("VariableName") %>' ForeColor='<%# ((bool)Eval("IsDangerous"))?Color.Red:Color.Empty %>' runat="Server" />