从 Sitecore 子布局(用户控件)的代码隐藏中设置 Page.Title 不起作用



我在从用户控件(子布局)的代码隐藏中为页面设置 Page.Title 时遇到问题。

我们有一个布局,MainLayout.aspx。我可以从此页面的代码隐藏中设置页面标题,并且工作正常。但是,如果在此之后,我尝试在 MySublayout1 的代码隐藏中设置页面标题,则会为 Page.Title 属性设置新值,但更改不会反映在页面上。

我尝试将页面和控件的代码从 Page_Load 移动到 OnInit 事件,但似乎没有任何效果。知道为什么这不起作用吗?

最好的方法是创建一个新的呈现或子布局来呈现页面的 -section。因此,您可以在子布局中的文本或 sc:text 控件中设置值,而不是仅从代码隐藏中设置 Page.Title。这样,您就可以根据当前的 Sitecore 项目一次设置更多属性,例如元关键字和元描述。

我会将

以下内容添加到其中的布局或子布局中:

<head runat="server" id="_Head">
    <title><sc:FieldRenderer ID="frTitle" runat="server" FieldName="title" /></title>
</head>

还要确保调用DataBind();或将Sitecore.Context.State.DataBind设置为 true。

如果希望子布局覆盖布局中的标题集,则可以将布局中的代码移动到子布局中Page_Init和使用Page_Load

如果这不起作用,则您的子布局可能无法访问主页。您可以尝试使用 WebUtil.CurrentPage.Title 访问当前页面标题。它可能还需要您在头部和标题元素上设置 runat="server",如下所示:

<head runat="server">
    <title runat="server"></title>

你可以简单地使用它:

<%=Sitecore.Context.Item["PageTitleFieldName"] %>

从给定字段呈现页面标题可以正常工作。

最新更新