如何通过C#代码定义内容控件

时间:2010-08-16 19:49:41

标签: c# asp.net sharepoint

我正在写一个webpart并试图更新浏览器标题...所以,我进入mywebpart.ascx添加了以下内容:

<asp:Content ID="contentPageTitle" ContentPlaceholderID="PlaceHolderPageTitle" runat="server">
    <%= SPContext.Current.Site.OpenWeb().Title %>
</asp:Content>

然后我收到了这个错误: 内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页。

所以,我试图在mywebpart.cs中以编程方式执行:

Content content = new Content();
content.ContentPlaceHolderID = "PlaceHolderPageTitle";

我现在需要输入这篇文章:SPContext.Current.Site.OpenWeb()。Title

Content控件中的哪些属性允许我这样做?如果有更好的方法,我也是开放的。感谢。

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法在用户控件中放置内容控件。如错误消息所示,内容控件必须是页面或母版页中的顶级控件,并且不能属于任何其他类型的控件。

另一种方法可能是自定义页面布局或母版页以包含您要提供的逻辑。

如果您对内容控件的ID有所保证(不是ContentPlaceholderID,请注意),那么您可以像这样与内容控件进行交互:

var content = Page.FindControl("contentPageTitle");
content.Controls.Add(new LiteralControl("Hello, World!"));

-

另外,请确保使用OpenWeb()打开的任何SPWeb都正确处理,否则您可能会遇到内存管理问题。