我正在尝试从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?
如果是这样,是否有一种基于值更改文本颜色的有效方法?
谢谢!
答案 0 :(得分:2)
要呈现为 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:
更好的方法是创建一个公共bool属性(比如IsDangerous
)来评估条件:
public bool IsDangerous
{
get
{
return <condition>;
}
}
并像这样使用它:
<asp:Label Text='<%# Eval("VariableName") %>' ForeColor='<%# ((bool)Eval("IsDangerous"))?Color.Red:Color.Empty %>' runat="Server" />