C# 如何从aspx文件而不是代码隐藏文件调用扩展函数

C# 如何从aspx文件而不是代码隐藏文件调用扩展函数,c#,asp.net,C#,Asp.net,我想调用一个从六边形表示返回颜色的函数。怎么做 这是我的密码 我想这样称呼它 当前它显示一个错误InvalidCastException,因为它返回字符串。 我已经创建了一个扩展,它提供颜色并应用于字符串。 如何在这里使用它 此函数位于页面所在的其他命名空间下 public static Color ToColor(this string originalColor) { return ColorTranslator.FromHtml(originalColo

我想调用一个从六边形表示返回颜色的函数。怎么做

这是我的密码

我想这样称呼它

当前它显示一个错误InvalidCastException,因为它返回字符串。 我已经创建了一个扩展,它提供颜色并应用于字符串。 如何在这里使用它

此函数位于页面所在的其他命名空间下

    public static Color ToColor(this string originalColor)
    {
        return ColorTranslator.FromHtml(originalColor);
    }
如果我试图调用ToColor,这里是一个错误

'string'不包含'ToColor'的定义,并且找不到接受第一个'string'类型参数的扩展方法'ToColor'(是否缺少using指令或程序集引用?

如果
ToColor()
位于与当前页面不同的命名空间中,您必须从aspx页面顶部引用它

<%@ Import Namespace="ShantanuGupta" %>

Eval返回一个对象,因此您的扩展方法将无法工作,因为它位于
字符串上,而不是
对象上

您可以:

  • 更改扩展方法,使其在
    对象
    上运行,这是一个坏主意,因为并非所有对象都是颜色
  • 在代码隐藏中添加一个名为
    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>
//在codebehind中
受保护颜色到颜色(对象原始颜色)
{
返回ColorTranslator.FromHtml(Convert.ToString(originalColor));
}
//加价

我从未尝试过,但请尝试Eval(“ColorCode.ToColor”)@Tom,这就是为什么我没有将其作为扩展方法。@Tom,Rob:如果数据库中存储了string或NULL怎么办。“那样的话,它会怎么样呢?”珊塔努,我不知道你说的是什么意思。
ToColor
方法将执行您选择的任何操作。它与将其作为扩展方法编写没有什么不同,因此最终的问题是“您希望它做什么?”=)