2013-01-10 9 views
12

<div id="newsListDiv" runat="server"></div>要素を1つだけ持つ視覚的なWebパーツ(「新しいアイテムの追加」フォームからstandart Visual Stuido 2012テンプレートで作成)があります。私は、プログラムで次のコードを使用して、それを自分自身のユーザーコントロールを追加したい: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"を調べると、ファイルが存在することがわかります。信頼レベルを "Full"に設定しようとしましたが、同じエラーが発生しました。

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

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

そして、そのようにコンパイルエラーを取得:「名前 『をInitializeControl』は現在のコンテキスト内に存在しない」私はまた、このようた.ascxファイルにユーザーコントロールを追加してみました。また、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 aトン。 – ChiYoung

+0

それは私のためにも働いた..ありがとう:)! – Muhammedh

0

同じ問題に実行していた。私は、パスに15を追加するための提案を見ていないと、これは私のために働いたザ

0

私はこの同じ問題を抱えていますが、それはコードの背後でそれを行うと機能しますが、私は幸運を得ません。これは私の参照とあなたの間の他の違いだけです。私が使用している他のコントロールと同じように、それをascxに追加するようにしてください! - 神はなぜこれをsharepoinで違うべきですか? t?!!!!

関連する問題