代码之家  ›  专栏  ›  技术社区  ›  Josh

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

  •  0
  • Josh  · 技术社区  · 14 年前

    我正在编写一个Web部件,正在尝试更新浏览器标题…因此,我进入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

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   kbrimington    14 年前

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

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

    如果您对内容控件的ID有一些保证(注意,不是ContentPlaceHolderID),那么您可以与内容控件进行交互,如下所示:

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

    ——

    另外,请确保打开任何spweb时 OpenWeb() 如果处理得当,可能会遇到内存管理问题。