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
方法将执行您选择的任何操作。它与将其作为扩展方法编写没有什么不同,因此最终的问题是“您希望它做什么?”=)