2009-11-12 45 views
0

我试图将以前在vb.net中制作的webform带到IronPython asp.net网站,但没有运气。在看到它没有工作后,我试着编写最简单的代码隐藏在vb.net webform中,看看在IronPython网站上vb.net是否有问题,并且我得到以下常见错误:在IronPython asp.net网站中的VB webform

“确保定义的类在这个文件中匹配的属性继承和它扩展了正确的基础页面(页或控制)“(对不起,如果翻译不是最准确的,我用西班牙语获得该信息)

但如果我创建一个vb.net webform在同一个网站,源代码在同一个文件中(在同一个页面中脚本runat =“server”标签之间的vb.net代码)我没有问题

我是否必须为这两种源代码语言配置一些东西,以便在同一个IronPython网站上以这种方式运行,比如在webconfig文件中配置某些内容,或者是否存在一些兼容性问题以解决无法解决的问题?

回答

1

<script />标签之间的代码在页面首次运行时动态编译。这使您可以混合使用语言。但是,您的代码隐藏文件中的类通过VS.NET静态编译为一个程序集......而VS.NET项目一次只能支持一种语言。

一个解决方案是将VB.NET代码隐藏在一个单独的程序集中。例如:

  • 一个新的VB类库项目添加到现有的解决方案
    • 添加一个参考的System.Web
    • 创建VB.NET代码屁股。它们应该是从System.Web.UI.Page继承的普通类。
  • 在你的ASP.NET网站项目,一个引用添加到新的项目
  • 编辑@页指令在* .aspx文件继承在新项目
    • 类例如<%@ Page Inherits="YourNewVBClassLibraryProject.MyVBCodeBehinds" ... />其中继承属性包含相关的命名空间中的类名
1

感谢您的答复Serilla。您的信息很有趣,但我只是通过创建app_folder并在其中添加vb文件来解决它。你认为我这样做可能会有一些未来的问题吗?当在web.config这些线路都启用了IronPython的工作

<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> 

当我把他们赶走

用VB文件的问题是,隐藏文件的VB代码的工作,但IronPython的didnt。当线路在那里,Ironpython代码背后的文件工作,但vb的人没有

+0

感谢您的更新。我更习惯于使用不使用App_Code文件夹的ASP.NET Web应用程序项目,但我没有发现您的解决方案存在任何问题。 :) – JulianM 2009-12-05 03:13:46