2013-05-30 3 views
2

J'ai un objet qui en tant que paramètre bool?Convertir bool? à Oui/Non/NULL chaîne

J'ai besoin de le montrer sur un répéteur.

<%# Eval("LS_Body_Connection") %> 

i créer une classe

public static class BooleanExtensions 
{ 
    public static string ToYesNoString(this bool value) 
    { 
     return value ? Resources.Yes : Resources.No; 
    } 
} 

comment l'utiliser sur le répéteur?

i essayer

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

mais pas recognaize

'bool' ne contient pas une définition pour 'ToYesNoString' et aucune méthode d'extension 'ToYesNoString' accepter un premier argument de type 'bool' pourrait être trouvé (vous manque une directive à l'aide ou une référence d'assemblage?)

dans le cs de la page que je peux appeler la méthode d'extension

quand j'ajouter

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

je reçois L'appel est ambigu entre les méthodes ou les propriétés suivantes: 'IDD.App_Code.BooleanExtensions.ToYesNoString (? Bool)' et « IDD.App_Code.BooleanExtensions.ToYesNoString (bool?) »

+0

Pourquoi ne pas faire fonctionner votre méthode d'extension avec 'bool?' – juharr

Répondre

4

essayer ((bool)Eval("LS_Body_Connection")).ToYesNoString()

Et vous devez importer l'espace de noms comme ci-dessous en tant que réponse de Claudio

<%@ Import Namespace="My.Namespace.Containing.MyExtensions.Class" %> 
3

Essayez d'ajouter inporting l'espace de noms où la méthode d'extension est placé

<%@ Import Namespace="YourNameSpace" %> 

Vous aurez également besoin de jeter la valeur Eval de retour à bool comme @Damith expliqué.

+0

1+ besoin d'importer l'espace de noms – Damith

1

Tout d'abord, vous aurez besoin d'une version de ToYesNoString qui accepte un bool?, plutôt que bool, paramètre .

public static string ToYesNoString(this bool? value) 
{ 
    return value.HasValue ? ToYesNoString(value.Value) : null; 
} 

Ensuite, dans votre répéteur, vous devriez être en mesure de jeter le résultat de Eval à un bool?

(bool?)Eval("LS_Body_Connection") 

puis soit appeler l'extension contre

((bool?)Eval("LS_Body_Connection")).ToYesNoString() 

ou, si cela ne fonctionne pas, appelez la méthode explicitement

BooleanExtensions.ToYesNoString((bool?)Eval("LS_Body_Connection")) 
Questions connexes