2013-01-10 153 views
12

我有一個可視化Web部件(使用「添加新項」窗體中的標準Visual Stuido 2012模板創建),只有一個<div id="newsListDiv" runat="server"></div>元素。我想用下面的代碼我自己的用戶控件編程方式添加到它:將用戶控件添加到Sharepoint 2013中的Web部件

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

但是當我部署解決方案和Web部件添加到頁面它顯示了一個錯誤頁,告訴我,該文件「/ _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’這個名字不會在目前情況下存在」。我還注意到,只要將Register或Reference行(帶有用戶控件的路徑)添加到我的.ascx文件中,.g.cs文件就會變成空白!當我刪除該行時,它會再次填滿。我嘗試了許多不同的路徑着作,例如「../_controltemplates/」,「/ controltemplates/15 /」等,但沒有一個有所作爲。我在這裏變得絕望,請幫忙!

回答

19

你忘了再嘗試一個選項。訪問_layouts文件夾時是一樣的。你應該指定15個蜂巢。

正確的路徑是「〜/ _controltemplates/

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

試過那一個,仍然沒有運氣。在我看來,自動生成.g.cs文件的工具存在一些問題。試圖重新安裝VS,但這也沒有幫助。我現在決定不使用UserControls,但我知道它可能無法工作,因爲我在VS中創建了ControlTemplates文件夾而不是映射文件夾。要稍後檢查... – 4tuneTeller

+1

這裏同樣的問題,但解決方案工作! Thnx一噸。 – ChiYoung

+0

它也適用於我..非常感謝:)! – Muhammedh

0

也陷入了同樣的問題。我從來沒有見過的建議添加15到路徑,這爲我工作。該我的參考文獻與你的其他區別是我沒有〜在開頭。/是第一個字符。

0

我有這個問題,只有當我在代碼後面執行時纔有效,但是我沒有運氣將它添加到ascx中,就像我使用的任何其他控件一樣! - 上帝爲什麼所有的事情都應該在sharepoin中有所不同T'!!!!

相關問題