将user control.ascx包含到xslt中

将user control.ascx包含到xslt中,xslt,user-controls,sitecore,ascx,Xslt,User Controls,Sitecore,Ascx,我已经创建了.ascx用户控件,并试图找到一种将其包含到xslt呈现中的方法。我该怎么做?我是为Sitecore做的。我想可能会创建一个占位符,但占位符不能在渲染中定义。非常感谢您提供的任何帮助。不可能将ASCX文件包含到xslt文件中,因为:xslt将XML转换为HTML、XML或纯文本,但不能转换为ASP.NET页面 您可以将xslt文件包含到ascx中,但不能将ascx包含到xslt文件中。最好的方法是将xslt文件更改为ascx文件,并使用占位符或直接将其包含在内。 我建议避免使用XSL

我已经创建了.ascx用户控件,并试图找到一种将其包含到xslt呈现中的方法。我该怎么做?我是为Sitecore做的。我想可能会创建一个占位符,但占位符不能在渲染中定义。非常感谢您提供的任何帮助。

不可能将ASCX文件包含到xslt文件中,因为:xslt将XML转换为HTML、XML或纯文本,但不能转换为ASP.NET页面

您可以将xslt文件包含到ascx中,但不能将ascx包含到xslt文件中。最好的方法是将xslt文件更改为ascx文件,并使用占位符或直接将其包含在内。 我建议避免使用XSLT


它们看起来很容易使用,但重构代码却非常困难

嗯,不可能直接从XSLT文件调用用户控件(.ascx)。然而,根据您想要实现的目标,您可以从XSLT文件中调用.net方法,称为XSLT扩展方法。例如,您可能需要编写类似于下面的代码来调用自定义.Net GetData()方法


...
当然,该类型需要先注册才能使用。类型注册可以在web.config中完成,也可以通过调用XSLTArgumentList类的AddExtensionObjectMethod动态完成

Sitecore也提供XSLT扩展控件,与扩展方法不同,它不是.net功能。XSL扩展控件是XSL呈现中与.NET类相对应的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"/>


参考资料:

我赞成。此外,在使用XSLT时,您不可避免地需要做一些XSLT无法实现的事情,并且必须求助于ASCX和/或“助手”。最好还是从ASCX和代码开始吧。无论如何,我想有一个解决方案可以将ASCX添加到xslt中,这是关于自定义XSL扩展控制的。我在这篇文章中找到了一些关于sc:sublayout的信息:如果您发现某些东西对ascx控件的整个功能(事件、视图状态等)有效,请与我们分享,但我99%确定它不起作用。
<extension mode="on" type="NamespaceName.ClassName, AssemblyName" namespace="http://www.w3.org/1999/XSL/Transform" singleInstance="true"/>