我正在写一个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控件中的哪些属性允许我这样做?如果有更好的方法,我也是开放的。感谢。
答案 0 :(得分:0)
不幸的是,您无法在用户控件中放置内容控件。如错误消息所示,内容控件必须是页面或母版页中的顶级控件,并且不能属于任何其他类型的控件。
另一种方法可能是自定义页面布局或母版页以包含您要提供的逻辑。
如果您对内容控件的ID有所保证(不是ContentPlaceholderID,请注意),那么您可以像这样与内容控件进行交互:
var content = Page.FindControl("contentPageTitle");
content.Controls.Add(new LiteralControl("Hello, World!"));
-
另外,请确保使用OpenWeb()
打开的任何SPWeb都正确处理,否则您可能会遇到内存管理问题。