2016-06-01 5 views
2

変換の中に言語セレクタを表示しようとしています。Kentico 9 - 変換中の言語セレクタの表示

Webパーツをページに追加しても、変換内で定義すると機能しません。

これは私の現在の変換の中にありますが、リピーターは単に「Nothing!」と表示されます。

<cms:LanguageDataSource ID="dsLanguages" ExcludeUntranslatedDocuments="false" ExcludeCurrentCulture="false" runat="server" /> 

<ul class="sub-menu"> 
    <cms:BasicRepeater ID="rptLanguages" DataSourceName="dsLanguages" ZeroRowsText="Nothing!" runat="server"> 
    <ItemTemplate> 
     <li class="menu-item"> 
     <a href="<%# Eval("URL") %>"><span class="flag-icon flag-icon-<%# Eval("CultureCode") %>"></span><%# Eval("CultureName") %></a> 
     </li> 
    </ItemTemplate> 
    </cms:BasicRepeater> 
</ul> 

答えて

1

これは本当に良い質問だと私は変換またはASPXテンプレート内のWebパーツを使用する方法について多くの混乱が一般的に存在していることがわかります。

ここでの主なポイントは、Webパーツは、一般的には、変換でそれらを登録できるユーザーコントロールしているので

Webパーツは、一般的にが変換またはASPXテンプレート

ではサポートされていないしていることですが、彼らの特定のライフサイクルのために、彼らが実際に働くという保証はありません。より複雑なWebパーツは確かに動作しません。これは言語セレクタの場合も同様です。

公式documentation状態:変換

のコントロールを使用する(UPDATEを参照してください)

は、あなたが登録して、変換の内部でユーザー コントロールとサーバーコントロールを使用することができます。 doneを参照してください 変換の例。ただし、変換でWebパーツを使用すると、パフォーマンス上の理由から、 は推奨されません。

彼らはがすべてでサポートされていません。しかし、これは完全に正確ではありません。私はすでにこの問題を解決するためにKenticoの技術的な執筆の依頼を提出しています。

最終的に通常のユーザーコントロールを言語セレクタから外して登録しようとすると、それが役立つかどうかは完全にはわかりませんが、私はいくつかのKenticoのデフォルトの変換が本当にユーザーコントロールを登録していることを知っています。

一般的に言えば、できる限り、いつでもユーザーコントロールを変換に使用しないようにしてください。言語セレクタのWebパーツを変換の外に置くことをお勧めします。他の調整をせずに正しく動作させるには最も簡単な方法です。

UPDATE:私たちは 変換のコード内のWebパーツを使用することはお勧めしません

はKenticoチームにメモhereの話をした後に現在の状態を反映するように変更されました。これにより、パフォーマンスが低下する可能性があり、 の部品が寿命のために変換内で正しく機能しない可能性があります。

+0

明確で詳細な回答をありがとう!私は、今のところユーザーコントロールルートを検討しようと考えています。それが失敗した場合は、メニューを完全にカスタムWebパーツに再作成する必要があります。 –

+0

あなたは大歓迎です!私はテクニカルライターと接触しており、現在の状態を反映するためにドキュメントを既に更新しています。私も私の答えを更新しました。質問をありがとう、あなたはそれが正常に動作するようになることを願って:) – Enn

-1

私はEnnに同意しますが、ページに動的に追加されているため、おそらくリピーターコントロールのライフサイクルに問題があります。 あなたがに設定DelayedLoadingプロパティで代わりにBasicRepaterCMSRepeaterコントロールを使用しようとしたことがありますか?

2

問題は、データソースからデータが返されないことです。

変換でデータソースのプロパティを動的に生成する必要がない場合は、言語データソースWebパーツをページ上に配置し、変換でそのWeb part control IDを参照することをおすすめします。

言語データソースWebパーツには、おそらく文脈から何かがありません。内部的には、DSのNodeプロパティにはDocumentContext.CurrentDocumentが使用されていますが、これは変換では使用できない可能性があります。これは、Ennが異なるサイクルを持つコントロールについて言います。

別のオプションは、カスタムC#コードをの中に入れ、プログラムで必要なデータを取得することです。

+0

答えが岩のためにありがとう!私はいくつかのオプションがあるので、それがどうなるか見てみましょう。 –

関連する問題