我有一个对象作为参数bool?
我需要在转发器上显示它。
<%# Eval("LS_Body_Connection") %>
我创建了一个类
public static class BooleanExtensions
{
public static string ToYesNoString(this bool value)
{
return value ? Resources.Yes : Resources.No;
}
}
如何在转发器上使用它?
我试试
((bool)Eval("LS_Body_Connection")).ToYesNoString()
但它不能重新认识
'bool'不包含'ToYesNoString'的定义,并且没有扩展方法'ToYesNoString'可以找到接受类型'bool'的第一个参数(你是否缺少using指令或汇编引用?)
在页面的cs中我可以调用扩展方法
当我添加
<%@ Import Namespace="IDD.App_Code" %>
我明白了
以下方法或属性之间的调用不明确:'IDD.App_Code.BooleanExtensions.ToYesNoString(bool?)'和'IDD.App_Code.BooleanExtensions.ToYesNoString(bool?)'
答案 0 :(得分:4)
尝试((bool)Eval("LS_Body_Connection")).ToYesNoString()
你需要像Claudio的答案
一样导入如下的命名空间<%@ Import Namespace="My.Namespace.Containing.MyExtensions.Class" %>
答案 1 :(得分:3)
尝试添加输入扩展方法所在的命名空间
<%@ Import Namespace="YourNameSpace" %>
@Damith解释说,您还需要将Eval
返回值转换为bool。
答案 2 :(得分:2)
首先,您需要一个ToYesNoString
版本,该版本接受bool?
,而不仅仅是bool
参数。
public static string ToYesNoString(this bool? value)
{
return value.HasValue ? ToYesNoString(value.Value) : null;
}
然后在您的转发器中,您应该能够将Eval
的结果转换为bool?
(bool?)Eval("LS_Body_Connection")
然后要么针对它调用扩展名
((bool?)Eval("LS_Body_Connection")).ToYesNoString()
或者,如果不起作用,请明确调用该方法
BooleanExtensions.ToYesNoString((bool?)Eval("LS_Body_Connection"))