现在我可以在我的XSLT文件中包含C#代码,并且我在整个XSLT文件中引用它没有任何问题。
XSLT文件:
<xsl:import href="secondXSLFile.xsl" />
带有C#代码的XSLT FILE(secondXSLFile.xsl):
<msxsl:script implements-prefix="myCode" language="C#">
<![CDATA[
public string ACoolFunction(string str1, string str2)
{ //some code }
]]>
</msxsl:script>
然而,当我在visual studio中并且我在上面的第二个XSLT文件中编辑C#代码时,我在代码中没有获得intellisense。所以,我的问题是:是否有可能在上面的第一个XSLT中引用一个实际的.cs文件而不是引用第二个XSLT文件?这样我就可以在Visual Studio中打开我的.cs文件,并在那里使用它。它将是一个包含大量功能的非常大的文件,因此这将更容易。
或者,如果有一种方法可以在msxsl:script块中简单地获取intellisense,那么这对我的目的来说也是可以的!
感谢您的帮助!
快速编辑:我基本上想知道我是否可以做这样的事情:
<xsl:import href="mycode.cs" />
答案 0 :(得分:1)
您是否知道XslCompiledTransform
有另一种调用.NET代码的机制,即extension objects?然后,您将编写C#或VB代码文件,在IDE中编译它们,并使用http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addextensionobject%28v=vs.110%29.aspx将实例或静态类传递给XslCompiledTransform
Transform
方法。这样您就可以分离C#和XSLT代码。当你提到ASP.NET时,我必须指出ASP.NET xml
控件使用XslTransform
,而不是`XslCompiledTransform,所以根据你在ASP.NET中如何使用XSLT,你需要检查一个不同于我链接的API。