Как мне объединить Script# и веб-элементы управления?

В настоящее время у меня есть проект веб-приложения в VS2010. Каждый элемент управления (в файлах *.ascx) содержится в отдельной папке вместе с веб-службами, используемыми этим элементом управления (в файлах *.asmx), и объектом javascript, используемым для управления им (в файлах *.js). Итак, макет проекта выглядит примерно так:

WebApp/
  WebControl1/
    WebControl1.ascx
      WebControl1.ascx.cs
      WebControl1.ascx.designer.cs
    WebControl1.asmx
      WebControl1.asmx.cs
    WebControl1.js
  WebControl2/
    ...
  Global.asax
  Default.aspx
    Default.aspx.cs
    Default.aspx.designer.cs
  ...

Проект расширяется, и я хочу обновить и заменить файлы.js, используя Script#. Я бы хотел сохранить эту структуру, но, насколько я могу судить, нет способа смешать Script # и обычные C# файлы в одном проекте.

Я посмотрел файл Readme PDF на сайте Script # и загрузил пример PhotoDemo, но не могу найти никаких примеров использования Script # вместе с веб-элементами управления. Я попытался добавить шаблон "Поддержка сценариев" в проект, а затем добавить шаблоны классов и страниц из списка шаблонов Script #, но оба они рассматриваются как обычные файлы исходного кода C#.

Я использовал рефлектор для просмотра бинарных файлов mscorlib, System.Web, ScriptSharp.Web, ScriptSharp.VisualStudio, ScriptSharp и Script.Windows, которые установлены Script # и не смогли найти ничего, что могло бы позволить такое поведение.

Кто-нибудь реализовал что-то подобное или есть какие-то дополнительные советы?

Единственный способ, которым мне удалось использовать Script # на данный момент, - это создать отдельный проект Script # и сделать вывод для файлов javascript внутри моего веб-приложения. Это работает, но не идеально.

Спасибо за ваше время,
Хью

1 ответ

Решение

Я недавно сделал решающий шаг и почти полностью прекратил использование пользовательских веб-элементов управления. Я компилирую свой контрольный HTML-код в вывод Script#, и вместо обратных передач я выполняю вызовы веб-служб с помощью WCF. Я думаю, что вы затрагиваете это, но, на мой взгляд, слишком сложно пытаться синхронизировать дизайн и логику того, что представляет собой единую концептуальную единицу, если дизайн и логика находятся в двух отдельных проектах.

Макеты моего проекта теперь выглядят примерно так:

WebApp/
  Pages/
    Home.aspx
    [etc]
  Services/
    MainService.svc

ScriptSharp/
  UI/
    Widget1.html
    Widget1.html.cs
    Widget2.html
    Widget2.html.cs

Я обманываю систему, устанавливая мои файлы ".html" как "Компилировать", превращая их содержимое в константы в выводе Script#. В моих файлах ".html.cs" у меня есть то, что вы ожидаете (обработчики событий для нажатия, изменения и т. Д.), За исключением того, что логика пользовательского интерфейса теперь использует jQuery больше, чем раньше (хорошо).

Если вам интересно, вы можете проверить мой проект Sharp UI, который занимается парсингом html-констант и обработкой каждого html-фрагмента, как если бы это был (клиентская версия) веб-пользовательский элемент управления.

Другие вопросы по тегам