2009-12-11 4 views
0

J'ai une application ASP.NET (C#), écrite avec VS 2008, qui utilise les fichiers CodeBehind et les pages maîtres. Il existe également d'autres classes et méthodes d'extension dans le même espace de noms. Maintenant sur certaines pages, mes classes et méthodes ne sont pas définies à partir du code inline, comme <% = MyClass.MyMethod(). ExtensionMethod()%>. Je peux écrire <% = MyNamespace.MyClass.MyMethod()%>, mais 1. il est inutilement plus long et 2. Je ne peux pas utiliser les méthodes d'extension alors. Sur la plupart des pages, cela fonctionne, mais pas sur certains.Pourquoi mes classes ne sont-elles pas disponibles à partir du code en ligne ASP.NET?

Je peux écrire aveuglément (sans IntelliSense) dans le code et il compilera bien, mais en accédant à la page, il jette une exception HttpCompiler me disant que la classe/méthode est indéfinie. Cela me suggère d'ajouter un "using" ou une référence. Mais comment suis-je supposé insérer un "using [namespace]" sur une page .aspx dans la vue de code? Ceci est uniquement disponible en code C#, pas en code HTML. Et je n'ai définitivement pas besoin de référence parce que tout est dans le même projet, même dans le même espace de noms.

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas parfois? Quelle est la raison du tout, je ne sais même pas où commencer à chercher le problème, sans parler d'une solution ...

Répondre

4
<%@ Import Namespace="Namespace.Containing.ExtensionMethod" %> 

Ou si vous le voulez appliquer globalement sur toutes les pages web que vous pouvez utiliser .config:

<pages> 
    <namespaces> 
    <add namespace="Namespace.Containing.ExtensionMethod"/> 
    </namespaces> 
</pages> 
+0

Merci, la chose a fait l'affaire d'importation. Mais pourquoi ça marche sans ça sur certaines pages? – ygoe

Questions connexes