Question

Permettez-moi de poser cette question sous un angle différent.

J'ai remarqué que chaque fois une page ASPX se rend dans le navigateur en utilisant le modèle « site Web », un assemblage aléatoire est créé « sur la volée » dans les fichiers ASP.NET temporaires. L'analyse de l'ensemble réflecteur montre que la classe créée pour tout fichier .aspx donné est sous l'espace de noms « ASP ».

Alors, en commençant par un vide répertoire « Temporary ASP.NET Files », j'ai ouvert mon ASP.NET « site web » dans VS2008, et a lancé la page par défaut. Immédiatement j'ai observé qu'un répertoire aléatoire a été généré à l'intérieur de ce dossier. Travailler mon chemin sur le chemin, j'ai trouvé 2 DLLs créé: App_Code.1lywsqqz.dll et App_Web_iohekame.dll. Je suppose que toutes les pages .aspx du site se compilés dans dll App_Web et tout dans le dossier App_Code sera compilé dans App_Code.dll.

Donc, si mon App_Code C # / fichiers VB.net sont sous l'espace de noms « ASP », et mes fichiers App_Web sont créés sous l'espace de noms « ASP », comment ça se fait que je reçois encore une erreur « Impossible de charger le type « ASP.NothwindDataContext ?

Quelqu'un a dit « vous n'avez pas besoin namespaces dans le dossier App_Code », mais je l'ai essayé sans et encore obtenir « Impossible de charger le type « NorthwindDataContext » ».

Alors qu'est-ce qui se passe entre le dossier App_Code, le reste du site, et namespaces?

EDIT: Voici mon LinqDataSource dans mon fichier .aspx:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="NothwindDataContext" EnableUpdate="True" 
    TableName="Categories">
</asp:LinqDataSource>

Ni "NorthwindDataContext", ni "ASP.NorthwindDataContext" fonctionne.

Était-ce utile?

La solution

Types de fichiers C # App_Code source, comme tout fichier C #, ne seront pas placés dans un espace de noms spécifique à moins déclarée spécifiquement autour par namespace Name {...}. Ainsi, une classe déclarée MyClass aura le Web.config nom complet du type "MyClass, App_Code". Cela.

Vous pouvez faire référence à comme <=>:. <=>

Side note: Lorsque vous utilisez un DBML dans <=>, l'espace de noms de classes générées sont définies dans ce fichier (voir la fenêtre des propriétés lorsque le fichier est ouvert DBML). Si vous spécifiez un espace de noms dans ce fichier, naturellement, vos classes seront définies dans cet espace de noms. Notez que cela ne contredit pas ce que je disais plus haut. La chose est, le générateur de contexte de données LINQ traite le fichier et définit les classes dans l'espace de noms spécifiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top