我有一個可視化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 /」等,但沒有一個有所作爲。我在這裏變得絕望,請幫忙!
試過那一個,仍然沒有運氣。在我看來,自動生成.g.cs文件的工具存在一些問題。試圖重新安裝VS,但這也沒有幫助。我現在決定不使用UserControls,但我知道它可能無法工作,因爲我在VS中創建了ControlTemplates文件夾而不是映射文件夾。要稍後檢查... – 4tuneTeller
這裏同樣的問題,但解決方案工作! Thnx一噸。 – ChiYoung
它也適用於我..非常感謝:)! – Muhammedh