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是否被剥离?
如果是,是否有一种有效的方法可以根据值更改文本颜色?
谢谢!
要渲染为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" />