Как мне объединить 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-фрагмента, как если бы это был (клиентская версия) веб-пользовательский элемент управления.