从XSL文件调用C#函数

从XSL文件调用C#函数,c#,xml,vb.net,xslt,C#,Xml,Vb.net,Xslt,我有一个web应用程序,其中aspx页面使用xsl文件。我在aspx页面中编写了以下代码,用于检查植物是否可用 Private Function LoadPLants() As Boolean Dim objPlantXML As New XmlDocument() Dim objPlantNodeList As XmlNodeList Dim objPlantNode As XmlNode Dim strXML As

我有一个web应用程序,其中aspx页面使用xsl文件。我在aspx页面中编写了以下代码,用于检查植物是否可用

     Private Function LoadPLants() As Boolean

        Dim objPlantXML As New XmlDocument()
        Dim objPlantNodeList As XmlNodeList
        Dim objPlantNode As XmlNode
        Dim strXML As String
        Dim strPlantCD As String
        Dim strPlantName As String

        'Get the list of plants to add to the dropdown
        objPlantXML.LoadXml("<ROOT>" & LoadPlants() & "</ROOT>")
        objPlantNodeList = objPlantXML.SelectNodes("//ROOT/Facilities")
        If objPlantNodeList.Count >= 1 Then
            Return 1
        Else
            Return 0
        End If

        Response.Write("<SCRIPT language='Javascript1.3'>")
        Response.Write("function GetPlants()")

    End Function
Private函数LoadPLants()为布尔值
Dim objPlantXML作为新的XmlDocument()
Dim objPlantNodeList作为XmlNodeList
Dim objPlantNode作为XmlNode
将strXML设置为字符串
Dim strPlantCD作为字符串
Dim strPlantName作为字符串
'获取要添加到下拉列表中的植物列表
objPlantXML.LoadXml(“&LoadPlants()&”)
objPlantNodeList=objPlantXML.SelectNodes(“//ROOT/Facilities”)
如果objPlantNodeList.Count>=1,则
返回1
其他的
返回0
如果结束
回答。写(“”)
Write(“函数GetPlants()”)
端函数
如果可用,则返回true,否则返回false。现在,我想在xsl文件中调用这个函数LoadPlants()。根据值true或false,我必须显示一个超链接;如果LoadPlants()返回的值为true,则表示存在植物,超链接应显示在网页中,否则不应显示。以下是xsl代码:

    <xsl:when test="TextilePlantCD[.=''] and CountryCD[.!='US']">
    <INPUT>

    <xsl:attribute name="type">text</xsl:attribute> 
    <xsl:attribute name="name">txtTextilePlantCD</xsl:attribute>
    <xsl:attribute name="size">3</xsl:attribute>
    <xsl:attribute name="maxlength">3</xsl:attribute>
    <xsl:attribute name="style">text-alignleft</xsl:attribute>
    <xsl:attribute name="id">dTex_<xsl:value-of select="BOLDetailID" /></xsl:attribute>
    <xsl:attribute name="readonly">true;</xsl:attribute>
    <xsl:attribute name="value"></xsl:attribute>
    <xsl:attribute name="style">width:35</xsl:attribute>    
    <xsl:attribute name="onkeypress">gotoNextControl(this);</xsl:attribute>
    </INPUT>

    <xsl:attribute name="onkeypress">LoadPlants();</xsl:attribute>
    <xsl:if test="true">
    <img>
    <xsl:attribute name="src">../Images/BookOpen.gif</xsl:attribute>
    <xsl:attribute name="OnClick">javascript:OpenPlantWindowForTextile('dTex_',"<xsl:value-of select="BOLDetailID" />" )
                  </xsl:attribute>
    </img>
    </xsl:if>

</xsl:when>

正文
txtTextilePlantCD
3.
3.
文本左对齐
dTex_
是的;
宽度:35
gotoNextControl(此);
装载植物();
../Images/BookOpen.gif
javascript:OpenPlantWindowForTextile('dTex_',“”)

我为此尝试了几个if条件,但是当我执行代码时,超级链接根本没有显示出来。这意味着if条件不起作用。有人能告诉我如何从xsl文件中获取aspx页面中函数的值吗?我不熟悉.net和xsl。提前感谢。

您可以在XSLT中调用C#方法,但它们将嵌入XSLT本身(请参阅)。我认为您实际上无法访问aspx页面中的函数。如果您解释了您实际想要实现什么(通过显示输入XML和您期望的输出),可能会有所帮助,因为您可能根本不需要使用C函数。谢谢另外请注意,目前的
LoadPlants()
函数是递归函数。行
objPlantXML.LoadXml(“&LoadPlants()&”)
调用函数本身,因此将导致无限循环。