0

.ascx ユーザー コントロールを作成しましたが、それを xslt レンダリングに含める方法を探しています。これどうやってするの?私はSitecoreのためにそれをやっています。プレースホルダーを作成するかもしれないと思ったのですが、レンダリングでプレースホルダーを定義することはできません。あなたが提供できる助けに感謝します。

4

2 に答える 2

1

次の理由により、ASCX ファイルを xslt ファイルに含めることはできません。XSLT は XML を HTML または XML またはプレーン テキストに変換しますが、ASP.NET ページには変換しません。

xslt ファイルを ascx に含めることはできますが、ascx を xslt ファイルに含めることはできません。最善の方法は、xslt ファイルを ascx ファイルに変更し、そこにプレースホルダーまたは直接 を含めることです。XSLT の使用を避けることをお勧めします。

これらは非常に使いやすいように見えますが、コードをリファクタリングするのは非常に困難です。

于 2013-10-08T06:46:50.997 に答える
1

XSLT ファイルから直接ユーザー コントロール (.ascx) を呼び出すことはできません。ただし、達成したい内容に応じて、XSLT ファイルから XSLT 拡張メソッドと呼ばれる .net メソッドを呼び出すことができます。たとえば、カスタム .Net GetData() メソッドを呼び出すには、以下のようなコードを記述する必要がある場合があります。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:customObject="urn:yourNamespace">
    <new-data>
              <xsl:value-of select="customObject:GetData()"/>        
    </new-data>
...

もちろん、使用する前にタイプを登録する必要があります。型の登録は web.config に行うか、XSLTArgumentListクラスのAddExtensionObjectMethodを呼び出して動的に行うことができます。

Sitecore は XSLT 拡張コントロールも提供していますが、拡張メソッドとは異なり、これは .net 機能ではありません。XSL 拡張コントロールは、.NET クラスに対応する XSL レンダリングの XML 要素です。たとえば、XSL 拡張コントロールは Sitecore.Web.UI.XslControls.Text .NET クラスに対応します。XSLT ファイルでは次のように消費されます。

XSL 拡張コントロールは、XSL コードのスタンドアロン要素です。

カスタムタイプを登録するには、以下を追加しますweb.config の要素:

<extension mode="on" type="NamespaceName.ClassName, AssemblyName" namespace="http://www.w3.org/1999/XSL/Transform" singleInstance="true"/>

参照: http://sdn.sitecore.net/upload/sitecore6/64/presentation_component_xsl_reference_sc62-64-a4.pdf

于 2013-10-15T04:07:33.810 に答える