2

パラメータとしてブール値を持つオブジェクトがありますか?

リピーター様に見せていただきたいです。

<%# 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' の定義が含まれておらず、タイプ 'bool' の最初の引数を受け入れる拡張メソッド 'ToYesNoString' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

ページのcsで、拡張メソッドを呼び出すことができます

追加するとき

<%@ Import Namespace="IDD.App_Code" %>

次のメソッドまたはプロパティの間で呼び出しがあいまいです: 'IDD.App_Code.BooleanExtensions.ToYesNoString(bool?)' と 'IDD.App_Code.BooleanExtensions.ToYesNoString(bool?)'

4

3 に答える 3

5

試す((bool)Eval("LS_Body_Connection")).ToYesNoString()

そして、Claudio's Answer として以下のような名前空間をインポートする必要があります

<%@ Import Namespace="My.Namespace.Containing.MyExtensions.Class" %>
于 2013-05-30T12:01:32.437 に答える
3

拡張メソッドが配置されている名前空間のインポートを追加してみてください

<%@ Import Namespace="YourNameSpace" %>

Eval@Damithが説明したように、戻り値をboolにキャストする必要もあります。

于 2013-05-30T11:57:14.440 に答える
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"))
于 2013-05-30T12:04:23.653 に答える