2009-11-12 4 views
0

J'ai essayé d'apporter un formulaire Web fait précédemment dans vb.net à un site Web IronPython asp.net sans succès. Après avoir vu cela ne fonctionnait pas, j'ai essayé d'écrire le plus simple codebehind vb.net webform pour voir s'il y avait un problème avec vb.net dans un site IronPython et j'ai l'erreur habituelle suivanteWebform VB dans le site Web IronPython asp.net

"être sûr que la classe définie dans ce fichier matches avec celui dans l'attribut hérite et qu'il étend la bonne page de base (page ou contrôle) "(désolé si la traduction n'est pas la plus précise je reçois ce message en espagnol)

mais si je crée un webform vb.net dans le même site, avec le code source dans le même fichier (avec le code vb.net entre script runat = "serveur" tags dans la même page) Je n'ai pas de problème. Dois-je configurer quelque chose pour que les deux types de code source s'exécutent de la sorte sur le même site Web IronPython, comme configurer quelque chose dans le fichier webconfig ou y a-t-il un problème de compatibilité qui ne peut être résolu?

Répondre

1

Le code entre les balises <script /> est compilé dynamiquement lors de la première exécution de la page. Cela vous permet de mélanger les langues. Cependant, les classes dans vos fichiers code-behind sont compilées statiquement dans un assembly par VS.NET ... et un projet VS.NET ne peut supporter qu'une langue à la fois.

Une solution consiste à placer vos codes-behind VB.NET dans un assemblage séparé. Par exemple:

  • Ajouter un nouveau projet VB Class Library à votre solution existante
    • Ajouter une référence à System.Web
    • Créer votre VB.NET Code autotractées. Ils devraient être des classes normales héritant de System.Web.UI.Page.
  • Dans votre projet de site Web ASP.NET, ajoutez une référence au nouveau projet
  • Modifier le @Page directives dans vos fichiers * .aspx à hériter des classes dans le nouveau projet
    • par exemple <%@ Page Inherits="YourNewVBClassLibraryProject.MyVBCodeBehinds" ... /> où le Hérite attribut contient le nom de la classe d'espace de nom qualifié correspondant
1

Merci pour la réponse Serilla. Vos informations étaient intéressantes mais je les ai simplement résolues en créant le dossier app_folder et en y ajoutant les fichiers vb. Pensez-vous que je pourrais avoir un problème futur pour le faire?

Le problème avec les fichiers vb était quand ces lignes dans le web.config ont été activés pour IronPython travailler

<pages compilationMode="Auto" pageParserFilterType="Microsoft.Web.Scripting.UI.NoCompileCodePageParserFilter" pageBaseType="Microsoft.Web.Scripting.UI.ScriptPage" userControlBaseType="Microsoft.Web.Scripting.UI.ScriptUserControl"> 
      <controls> 
       <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </controls> 
</pages> 

quand je les ai enlevés, le code de vb derrière dossiers traités, mais na pas IronPython. Lorsque les lignes étaient là, le code Ironpython derrière les fichiers travaillés, mais vb ceux-ci n'ont pas

+0

Merci pour la mise à jour. Je suis plus habitué à travailler avec des projets d'application Web ASP.NET qui n'utilisent pas le dossier App_Code, mais je ne vois aucun problème avec votre solution. :) – JulianM

Questions connexes