2009-10-19 10 views
7

Ok. C'est probablement une question vraiment stupide, mais je vais le demander de toute façon ...Comment utiliser les extensions et les méthodes utilitaires dans le balisage?

Comment puis-je utiliser des extensions et des méthodes utilitaires dans mon balisage ASP.Net? Par exemple, (par exemple) j'ai une méthode d'extension DateTime appelé « ToExampleString() » (contenu dans la classe DateTimeExtensions dans mon Common.Extensions projet) et je veux l'utiliser dans mon balisage dans ItemTemplate du ListView:

<ItemTemplate> 
    <span><%# ((DateTime)Eval("DateStarted")).ToExampleString() %></span> 
</ItemTemplate> 

Je reçois l'erreur suivante:

« System.DateTime » ne contient pas de définition de « ToExampleString » et aucune méthode d'extension « ToExampleString » accepter un premier argument de type « System.DateTime » pourrait être trouvé (manque-t-il une directive using ou une référence d'assembly?)

La page ne peut tout simplement pas voir la méthode des extensions.

De même, comment puis-je faire connaissance d'une classe utilitaire de balisage de ma page:

<span><%# ExampleUtility.ProcessDate(Eval("DateStarted") %></span> 

Quelles mesures dois-je prendre pour faire ce travail de choses? Je suppose que je néglige quelque chose d'une évidence stupide?

Merci

Répondre

7
<%@ Import Namespace="Common.Extensions" %> 

je crois que vous pouvez le faire pour tous vos marges bénéficiaires dans le web.config.

+0

Merci Yuriy. J'ai une instruction "using Common.Extensions" dans mon code derrière. Est-ce que ça devrait marcher? –

+0

Non, je crois que vous devez également le placer dans le balisage. –

+0

L'instruction using dans le code behind permet à votre code derrière la classe de voir les méthodes d'extension, mais vous devez également importer l'espace de noms dans le fichier de marquage. –

0

Espaces de noms?

Vous devez ajouter à l'aide/directive à l'importation dans le balisage ASPX

2

Vous devez importer l'espace de noms, en haut de la page:

<%@ Import Namespace="Common.Extensions"%> 
9

Vous devez importer l'espace de noms soit en haut de la page que d'autres ont dit

<%@ Import Namespace="Common.Extensions"%> 

ou globalement dans votre web.config

<system.web> 
    <pages> 
    <namespaces> 
     <add namespace="Common.Extensions"/> 
    </namespaces> 
    </pages> 
</system.web> 

Si vous avez simplement besoin d'accéder aux méthodes d'un module public (ou d'une classe statique), importez simplement l'espace de noms racine de votre application.

+0

Merci pour les informations supplémentaires sur le web.config! –

Questions connexes