0

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

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

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

4

4 回答 4

1

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

于 2012-09-18T18:43:51.587 回答
1

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

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

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

于 2012-09-21T20:25:22.687 回答
0

你可以简单地使用这个:

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

从给定字段呈现页面标题效果很好。

于 2013-03-04T14:18:01.617 回答
0

如果您希望 Sublayout 覆盖 Layout 中设置的标题,您可以将 Layout 中的代码移动到Page_InitPage_Load在您的 Sublayout 中使用。

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

<head runat="server">
    <title runat="server"></title>
于 2012-09-17T23:36:52.953 回答