2013-01-10 14 views
12

Mam wizualną część internetową (utworzoną za pomocą standardowego szablonu Visual Stuido 2012 z formularza "Dodaj nowy element") za pomocą pojedynczego elementu <div id="newsListDiv" runat="server"></div>. Chcę programowo dodać własną kontrolę użytkownika do niego za pomocą następującego kodu:Dodaj kontrolę użytkownika do części strony w Sharepoint 2013

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

Ale kiedy wdrożyć rozwiązanie i dodać część sieci web do strony pokazuje stronę błędu, mówiąc mi, że plik „/ _ControlTemplates/MainTheme/NewsLine.ascx "nie istnieje. Ale jeśli zajrzę do folderu "C: \ Program Files \ Common Files \ microsoft shared \ Web Server Extensions \ 15 \ TEMPLATE \ CONTROLTEMPLATES \ MainTheme", widzę, że plik tam jest. Próbowałem ustawić poziom zaufania na "Pełny", ale otrzymałem ten sam błąd. Próbowałem też dodanie kontrolę użytkownika w .ascx pliku tak:

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

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

I że sposób, w jaki pojawia się błąd kompilacji: „Nazwa«InitializeControl»nie istnieje w bieżącym kontekście”. Zauważyłem również, że jak tylko dodam Register lub Reference line (ze ścieżką do mojej kontroli użytkownika) do mojego pliku .ascx, plik .g.cs stanie się pusty! I znów wypełnia się, kiedy usuwam tę linię. Próbowałem wielu różnych ścieżek pisania, takich jak "../_controltemplates/", "/ controltemplates/15 /", itp. Ale żaden z nich nie zrobił żadnej różnicy. Jestem tutaj zdesperowany, proszę, pomóż!

Odpowiedz

19

Zapomniałeś spróbować jeszcze jednej opcji. To samo dotyczy dostępu do folderu _layouts. Powinieneś określić 15 ul.

Poprawna ścieżka jest „~/_ControlTemplates/

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

Wypróbowałem to też, wciąż nie ma szczęścia. Wydaje mi się, że jest jakiś problem z narzędziem, które automatycznie generuje plik .g.cs. Próbowałem ponownie zainstalować VS, ale to też nie pomogło. Postanowiłem nie używać teraz UserControls, ale mam pomysł, że może nie działać, ponieważ utworzyłem folder ControlTemplates w VS nie jako zmapowany folder. Sprawdzę to później ... – 4tuneTeller

+1

Ten sam problem tutaj, ale rozwiązanie zadziałało! Thnx tonę. – ChiYoung

+0

To zadziałało również dla mnie .. Wielkie dzięki :)! – Muhammedh

0

biegł w tej samej kwestii. Nie widziałem sugestię na dodanie 15 do ścieżki i to pracował dla mnie. Na Jedyną różnicą między moim referencją a twoją jest to, że nie mam ~ na początku./ Jest to pierwsza postać:

0

Mam ten sam problem tylko działa, gdy robię to w kodzie za, ale nie mam szczęścia tring, aby dodać go do ascx, tak jak wszystkie inne kontrolki, których używam! - Bóg Dlaczego wszystko powinno być inne w sharepoin t? !!!!