0

ユーザーコントロール(サブレイアウト)の背後にあるコードからのページのPage.Titleの設定に問題があります。

レイアウトMainLayout.aspxがあります。このページの後ろのコードからページタイトルを設定できますが、正常に機能します。ただし、この後、MySublayout1のコードビハインドでページタイトルを設定しようとすると、Page.Titleプロパティに新しい値が設定されますが、変更はページに反映されません。

ページとコントロールの両方で、コードをPage_LoadからOnInitイベントに移動しようとしましたが、何も機能しないようです。なぜこれが機能しないのか考えてみてください。

4

4 に答える 4

1

これに対する最善のアプローチは、ページのセクションをレンダリングする新しいレンダリングまたはサブレイアウトを作成することです。したがって、分離コードから Page.Title のみを設定する代わりに、サブレイアウトのリテラルまたは sc:text コントロールで値を設定できます。このようにして、現在の Sitecore アイテムに基づいて、メタ キーワードやメタ説明など、より多くのプロパティを一度に設定できます。

于 2012-09-18T18:43:51.587 に答える
1

その中にあるレイアウトまたはサブレイアウトに次を追加します。

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

また、trueを呼び出すDataBind();か、設定してください。Sitecore.Context.State.DataBind

于 2012-09-21T20:25:22.687 に答える
0

あなたは単にこれを使うことができます:

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

指定されたフィールドからページタイトルをレンダリングすることは問題なく機能します。

于 2013-03-04T14:18:01.617 に答える
0

サブレイアウトでレイアウトに設定されたタイトルをオーバーライドする場合は、レイアウト内のコードをサブレイアウトに移動してPage_Init使用できPage_Loadます。

それでもうまくいかない場合は、サブレイアウトでページへのアクセスに問題がある可能性があります。を使用WebUtil.CurrentPage.Titleして、現在のページ タイトルにアクセスできます。次のように head 要素と title 要素に runat="server" を設定する必要がある場合もあります。

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