Несмотря на все мои усилия, мой работодатель поручил мне разработать веб-приложение с использованием Sharepoint вместо чего-то полезного.
У меня возникают проблемы при встраивании пользовательских элементов управления в визуальные веб-части в проекте Sharepoint в Visual Studio 2010. Я использую следующие шаги (обратите внимание, что этот код является лишь кратким изложением того, что у меня есть - как мой настоящий код в настоящее время содержит достаточно ругательств, чтобы забанить меня в StackOverflow на всю жизнь):
Создание нового пустого проекта Sharepoint.
Добавить пользовательский элемент управления в проект (расположенный в шаблонах ControlTemplates) с именем MyControl.ascx
MyControl.ascx:
<asp:TextBox runat="server" ID="txtStuff" />
MyControl.ascx.cs:
public class MyControl : UserControl
{
public int Property { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
txtStuff.Text = "I hate you sharepoint";
}
}
- Добавление визуальной веб-части в проект, MyWebPart.ascx
MyWebPart.ascx
<%@ Register TagPrefix="c" TagName="MyControl" src="~/_controlTemplates/MyControl" %>
<c:MyControl runat="server" ID="mycontrol" />
Когда я дохожу до этого момента, я не получаю никакого смысла для MyControl, скорее всего, потому что VS не знает о существовании файла .ascx. Я также получаю зеленую волнистую линию под контрольным именем, сообщая мне, что ее не существует. Однако я все еще могу развернуть проект на самом сервере Sharepoint, и все будет работать хорошо.
Однако это разваливается, когда мне нужно что-то полезное, взаимодействуя с самим элементом управления:
MyWebPart.ascx.cs
protected void Page_Load(object sender, EventArgs e) {
mycontrol.Property = 1234;
}
Что приводит к ошибке «System.Web.UI.UserControl не содержит определения« Свойство »и метода расширения ...». Файл designer.cs действительно определяет элемент управления как UserControl, а не его реальный тип.
Поскольку теперь это приводит к ошибке сборки, я не могу развернуть проект на сервере Sharepoint, поэтому я не могу обойти эту проблему intellisense.
Я обнаружил, что это очень противоречивое поведение; иногда появляется intellisense, в зависимости от того, развернут ли проект на сервере или нет. Тем не менее, я не могу предсказать набор шагов, которые я смог бы предпринять, чтобы привести среду разработки в рабочее состояние.
Есть мысли? Вещи, которые я пробовал:
Щелкните правой кнопкой мыши ASCX веб-части, выберите «Открыть с помощью ...» и выберите параметр «С кодированием». Без эффекта.
Разработка с использованием приложения, развернутого и отозванного, а также различных комбинаций закрытия и повторного открытия файлов .ascx, решения и самой Visual Studio. Иногда работает, иногда нет.
Отключена опция проекта «Автоотвод после отладки» (рекомендуется из статьи базы знаний). Без эффекта.