0

いくつかの異なるレイアウトで静的にバインドしたいサブレイアウトがあります。そのため、サブレイアウトのすべてのインスタンスでデザイナーでパス属性を宣言的に指定したくありません。私が本当にやりたいことは、サブレイアウトによるパスを含む定数ファイル (または構成ファイル) を用意することです。これを使用して、サブレイアウトを含むコード ビハインド ファイルで指定されたサブレイアウトのパスを設定します。

on_loadただし、またはでパス属性を設定しようとするとon_init、サブレイアウトがページにレンダリングされません。何か不足していますか?

例:

private void Page_Load(object sender, EventArgs e) {
   plBakingTips.Path = "/layouts/User Defined/Sublayouts/Products/Product List/Product/Product Bake It Yours.ascx";
}
4

3 に答える 3

1

デフォルトでは、Sitecore はすべてのページ コントロールを PreInit に設定します。これは変更できますが、これはグローバル設定であり、変更をお勧めするかどうかはわかりません。

ただし、サブレイアウトを構築するオーバーライド可能な「ファクトリ」があり、これを実行できる場合があります。カスタム SublayoutRenderingType を実装し、web.config で Sitecore のデフォルトをオーバーライドします。

ここで例を参照してください: http://sitecoreblog.alexshyba.com/2011/08/sitecore-output-caching-kick-it-up.html?m=1

于 2012-08-03T12:21:31.393 に答える
1

パスの前に ~ を付けるようにしてください

Path = "~/layouts...";

また、これはサブレイアウト アイテム パスではなく、ファイル システム パスです (パスがアイテム パスのように見えるため、これについて言及します)。

于 2012-08-03T19:52:55.463 に答える
0

これはまさにあなたが必要とするものです。コードビハインドにサブレイアウトを追加できます

Sitecore アイテムのレイアウトを一時的に変更する

以前はサブ レイアウトのデータ ソースを変更していましたが、うまく機能しています。

于 2012-08-03T07:56:32.633 に答える