Веб-форма VB на веб-сайте IronPython asp.net - PullRequest
0 голосов
/ 12 ноября 2009

Я безуспешно пытался перенести ранее созданную веб-форму, созданную в vb.net, на сайт IronPython asp.net. Увидев, что это не работает, я попытался написать простейшую веб-форму codebehind vb.net, чтобы выяснить, есть ли проблема с vb.net на веб-сайте IronPython, и я получил следующую обычную ошибку

«убедитесь, что определенный класс в этом файле совпадает с классом в наследуемом атрибуте и расширяет правую базовую страницу (страницу или элемент управления)» (извините, если перевод не самый точный, я получаю это сообщение на испанском языке )

но если я создам веб-форму vb.net на том же веб-сайте, с исходным кодом в том же файле (с кодом vb.net между тегами script runat = "server" на той же странице), я не получу проблема .

Нужно ли что-то настраивать для обоих типов языков исходного кода для работы таким же образом на одном и том же веб-сайте IronPython, например, для настройки чего-либо в файле webconfig, или есть какие-то проблемы с совместимостью для выполнения этого, которые не могут быть решены?

Ответы [ 2 ]

1 голос
/ 26 ноября 2009

Спасибо за ответ Серилла. Ваша информация была интересной, но я просто решил ее, создав app_folder и добавив туда файлы vb. Как вы думаете, у меня могут быть какие-то проблемы в будущем?

Проблема с файлами 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 за файлами работал, но Ironpython не работал. Когда строки были там, код Ironpython за файлами работал, а vb не

1 голос
/ 17 ноября 2009

Код между тегами <script /> динамически компилируется при первом запуске страницы. Это позволяет вам смешивать языки. Однако классы в ваших файлах с выделенным кодом статически компилируются в сборку с помощью VS.NET ... и проект VS.NET может поддерживать только один язык за раз.

Одним из решений является размещение кода VB.NET в отдельной сборке. Например:

  • Добавьте новый проект библиотеки классов VB в существующее решение.
    • Добавить ссылку на System.Web
    • Создайте свой код VB.NET. Это должны быть обычные классы, наследуемые от System.Web.UI.Page.
  • В своем проекте веб-сайта ASP.NET добавьте ссылку на новый проект
  • Отредактируйте директивы @ Page в ваших * .aspx файлах, чтобы наследовать классы в новом проекте.
    • например. <%@ Page Inherits="YourNewVBClassLibraryProject.MyVBCodeBehinds" ... /> где атрибут Inherits содержит соответствующее имя класса с указанием пространства имен
...