我想调用一个从hexa表示返回颜色的函数。怎么做。
这是我的代码
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Status") %>' BackColor='<%# Eval("ColorCode") %>'></asp:Label>
我想这样称呼它
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Status") %>' BackColor='<%# Eval("ColorCode").ToString().ToColor() %>'></asp:Label>
目前它显示错误InvalidCastException,因为它返回字符串。 我创建了一个扩展,它给出了Color并应用于字符串。 如何在这里使用它。
此功能位于页面所在的其他命名空间下。
public static Color ToColor(this string originalColor)
{
return ColorTranslator.FromHtml(originalColor);
}
如果我尝试调用ToColor
,则出现错误'string'不包含'ToColor'的定义,也没有扩展方法'ToColor'接受类型'string'的第一个参数(你是否缺少using指令或汇编引用?)
答案 0 :(得分:4)
如果ToColor()
与当前页面的名称空间不同,则必须从aspx页面的顶部引用它。
<%@ Import Namespace="ShantanuGupta" %>
答案 1 :(得分:0)
Eval会返回一个对象,因此您的扩展方法无法像string
上的那样工作,而不是object
。
你可以:
object
上运行,这是一个错误的想法,因为并非所有对象都是颜色。ToColor
的新功能并调用它。例如
// In codebehind
protected Color ToColor(object originalColor)
{
return ColorTranslator.FromHtml(Convert.ToString(originalColor));
}
//in markup
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Status") %>' BackColor="<%# ToColor(Eval("ColorCode")) %>"></asp:Label>