我在用户控件(子布局)的代码隐藏中为页面设置Page.Title时遇到问题。
我们有一个布局MainLayout.aspx。我可以从这个页面的代码隐藏设置页面标题,它工作正常。但是,如果在此之后,我尝试在MySublayout1的代码隐藏中设置页面标题,则为Page.Title属性设置新值,但更改不会反映在页面上。
我已经尝试将代码从Page_Load移动到页面和控件的OnInit事件,但似乎没有任何效果。知道为什么这不起作用吗?
答案 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;
它可以很好地从给定字段呈现页面标题。