Я на самом деле относительно новичок в SharePoint, и поначалу я был очень удивлен, что нужно было создавать отдельные элементы управления вручную, без графического интерфейса, как при обычной веб-разработке на ASP.NET. Тем не менее, у меня был очень очень хороший совет, который позволил мне по-прежнему использовать графический интерфейс и использовать его для создания веб-частей для Sharepoint. Это включает в себя оборачивание WebUserControls в веб-части.
Ссылка, которую я использовал здесь: http://www.a2zdotnet.com/View.aspx?id=95
Вы в основном создаете WebUserControls (файл .ascx) на веб-сайте, и поэтому вы можете просто добавить свои элементы управления, как и любую обычную страницу .aspx. Вы также можете иметь обычный файл с выделенным кодом (.ascx.cs). Затем перетащите файл .ascx в файл .aspx, чтобы он затем использовал ваш WebUserControl. Когда ваши файлы .ascx готовы и собраны, вы копируете их в каталог Layouts в 12-Hive вашего SharePoint Server. Лучше всего создать там подкаталог, чтобы избежать столкновения с другими файлами там.
Затем необходимо создать отдельный проект Class Library , в котором будет включен код вашего WebPart. Затем вы указываете WebPart использовать ваши файлы .ascx в каталоге раскладок. Примерно так:
protected override void CreateChildControls()
{
base.CreateChildControls();
try
{
this.Controls.Clear();
_myControl = this.Page.LoadControl("\\_layouts\\MyFolder\\WebUserControl.ascx");
this.Controls.Add(_myControl);
}
catch (Exception e)
{
err = e.Message;
}
Ссылка, которую я предоставил выше, предоставляет больше информации, но в основном вы компилируете проект webpart, а затем добавляете DLL в каталог BIN вашего сервера sharepoint (c: \ inetpub \ wwwroot \ wss \ etc) , Кстати, вам не нужно компилировать его в GAC .
Затем вы добавляете запись в web.config вашего сервера sharepoint:
<SafeControl Assembly="MyWebUserControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="MyWebUserControl" TypeName="*" Safe="True" />
Если вы не не скомпилировали DLL в GAC, но вместо этого BIN вам просто нужно:
<SafeControl Assembly="UserControl" Namespace="UserControl" TypeName="*" Safe="True" />
Опять же, ссылка, которую я разместил выше, написана в коде, ссылка на GUID, которая необходима, только если вы поместили DLL в GAC. Вам не нужна GUID-часть кода, если вы размещены только в каталоге BIN.
Надеюсь, это поможет.
Ash