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

时间:2012-09-17 22:25:46

标签: user-controls sitecore title code-behind page-title

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

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

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

4 个答案:

答案 0 :(得分:1)

最好的方法是创建一个新的渲染或子布局,用于渲染页面的剖面。因此,您可以在子布局中设置文字或sc:文本控件中的值,而不是仅设置代码隐藏中的Page.Title。 这样,您可以根据当前的Sitecore项目,像元关键字和元描述一样设置更多属性。

答案 1 :(得分:1)

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

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

另外,请务必致电DataBind();或将Sitecore.Context.State.DataBind设为真。

答案 2 :(得分:0)

如果您希望Sublayout覆盖布局中的标题集,您可以将布局中的代码移至Page_Init并在子布局中使用Page_Load

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

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

答案 3 :(得分:0)

你可以简单地使用它:

&LT;标题&GT; &lt;%= Sitecore.Context.Item [“PageTitleFieldName”]%&gt; &LT; /标题&GT;

它可以很好地从给定字段呈现页面标题。