Подтвердить что ты не робот

Добавить пользовательский элемент управления в веб-часть в Sharepoint 2013

У меня есть визуальная веб-часть (созданная стандартным шаблоном Visual Stuido 2012 из формы "Добавить новый элемент" ) только с одним элементом <div id="newsListDiv" runat="server"></div>. Я хочу программно добавить к нему свой собственный элемент управления, используя следующий код:

protected void Page_Load(object sender, EventArgs e)
{    
    NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/MainTheme/NewsLine.ascx") as NewsLine;
    newsListDiv.Controls.Add(newsLine);
}

Но когда я развертываю решение и добавляю веб-часть на страницу, он показывает страницу с ошибкой, сообщая мне, что файл '/_ControlTemplates/MainTheme/NewsLine.ascx' не существует. Но если я загляну в папку "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES\MainTheme", я вижу, что файл присутствует там. Я попытался установить уровень доверия на "Полный", но получил ту же ошибку. Я также попытался добавить пользовательский элемент управления в файл .ascx следующим образом:

<%@ Register Src="~/_controltemplates/MainTheme/NewsLine.ascx" TagPrefix="uc1" TagName="NewsLine" %>

<div id="newsListDiv" runat="server">
    <uc1:NewsLine runat="server" id="NewsLine" />
</div>

И таким образом получите ошибку компиляции: "Имя" InitializeControl "не существует в текущем контексте". Я также заметил, что, как только я добавлю строку регистрации или ссылки (с помощью пути к моему пользовательскому элементу управления) в мой .ascx файл, файл .g.cs станет пустым! И он снова заполняется, когда я удаляю эту строку. Я пробовал много разных путей, например "../_controltemplates/", "/controltemplates/15/" и т.д. Но ни один из них не имел никакого значения. Я здесь отчаянно, пожалуйста, помогите!

4b9b3361

Ответ 1

Вы забыли попробовать еще один вариант. То же самое происходит при доступе к папке _layouts. Вы должны указать 15 улей.

Правильный путь: "~/_ControlTemplates/ 15

 NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/15/MainTheme/NewsLine.ascx") 

Ответ 2

Вступил в ту же проблему. Я не видел предложения добавить 15 к пути, и это сработало для меня. Единственная разница между моей ссылкой и твоей - у меня нет начала. /- первый символ.

Ответ 3

У меня есть эта же проблема, только она работает, когда я делаю это в коде, но мне не повезло добавить его в ascx, как и любые другие элементы управления, которые я использую! - Боже, почему все должно быть в другом месте?!!!!