Форум программистов, компьютерный форум, киберфорум
Наши страницы
V_Monomax
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Добавление .js файлов в проект веб форм SharePoint

Запись от V_Monomax размещена 10.07.2018 в 09:13
Обновил(-а) V_Monomax 10.07.2018 в 10:58 (устранение неточностей)
Метки asp.net, c#, sharepoint

SharePoint весьма интересный движок для внутреннего сайта да и для документооборота. Очень удобно что для него можно писать свои странички, как в ASP.net, так и во внутренем редакторе уже встроенном в SharePoint. Я решил использовать проекты веб форм c# для работы (удобнее создавать логику, да и с HTML слабо дружу). В итоге часто приходиться использовать javascript, для работы на стороне клиента, однако внедрение скрипта, можно производить тремя путями:
  1. Использовать string переменные
  2. Создавать .js файлы, а затем их складывать в какую-нибудь папочку на развернутом сайте
  3. Создать в проекте файлы .js и публиковать их в момент развертывания проекта встроенными средствами
Первый путь очень неудобен так как значительно засоряет код, и часто заставляет отклонятся от SOLID концепции.
Второй путь очень неудобен, так например, у меня два сервера с SharePoint, один для разработки, второй для публикации готовых форм, в итоге мне приходится при любом изменении .js файла публиковать его дважды, в итоге начинаешь путаться, а если еще и таких файлов несколько, то это совсем плохо.
Третий путь очень интересен, тем что все файлы находятся в одном месте, и это дает возможность отладив один раз, более не возвращаться к коду, в лучшем случае его дополнять, а это уже похоже на одну из формулировок SOLID.
Рассмотрим задачу:
Хотим использовать подключаемый javascript, или иной ресурс в SharePoint.
Решение:
Для таких случаев создаем Модуль:
В нужном месте проекта в VisualStudio (будь корневая или иная папка (подпапка) проекта), по правой кнопке жмем
"Добавить" --> "Office/SharePoint" -->"Модуль".
Вычищаем от туда все, затем добавляем нужный файл, в моем случае это JavaScript1.js, автоматически создается следующая XML:
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="ScriptPanelButton">
    <File Path="ScriptPanelButton\JavaScript1.js" Url="ScriptPanelButton/JavaScript1.js" />
  </Module>
</Elements>
В общем с этим мы уже что-то можем делать. Наш JavaScript1.js будет размещен по следующему абсолютному адресу: /ScriptPanelButton/JavaScript1.js
Согласитесь, мы иногда разворачиваем на сайте еще и папку с викистраницами, и хотелось бы видеть скрипты в папке с викистраницами, да еще и собранные в отдельные папки или в папке со скриптами, где несколько папок, каждая относящаяся к своей странице, в общем что называется мы ходим видеть древообразную структуру. У меня есть папка с викистраницами Scripts, в этой папке есть страничка PanelButton, на которой мы и разместим веб форму. Тогда с учетом всего оговоренного ранее получаем:
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="ScriptPanelButton" Url="Scripts/PanelButtonScripts">
    <File Path="ScriptPanelButton\JavaScript1.js" Url="JavaScript1.js"  Type="GhostableInLibrary" ReplaceContent="true" />
  </Module>
</Elements>
Тогда в результате для загрузки на веб форме нам понадобиться следующий код:
C#
1
2
3
4
5
6
protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            string scriptPath = "PanelButtonScripts/JavaScript1.js";
            Page.ClientScript.RegisterClientScriptInclude(GetType(), "SHW", scriptPath);
        }
Следует заметить, что модуль регистрируется в Feature с действием на Web.

Таким образом мы написав в одном месте код, проведя его тестирование и отладку, получаем возможность не заботиться об необходимости копирования .js файлов на конечном сайте, что согласитесь, очень удобно.
Кроме того появляется наглядность кода, и конечно же возможность выполнения действий на стороне клиента, а это множество функций.
А уж применять такое можно даже для создания собственных контролов, которые можно использовать и при визуальном программировании.
Размещено в Без категории
Просмотров 145 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru