在论坛上使用 GetMedia 搜索错误时,我读到我给函数提供的变量不是整数。
这是错误:System.OverflowException:对于 Int32,值太大或太小。
我检查我的变量:
<xsl:value-of select="$currentPage/image" />
输出是:
1663
然后我试试这个:
<xsl:variable name="media" select="umbraco.library:GetMedia($currentPage/image, false())" />
它返回我上面写给你的错误。如果我写的是 1663 而不是 $currentPage/image 它可以工作,但是它是硬编码的,它不能被硬编码。
这里是我的 xslt
<xsl:template match="/">
<!-- start writing XSLT -->
<xsl:value-of select="$currentPage/image" />
<xsl:variable name="media" select="umbraco.library:GetMedia($currentPage/image, false())" />
<div class="tfirst">
<p>
<!--xsl:if test="not($media/error)">
<img src="{$media/umbracoFile}" class="left timg" />
</xsl:if-->
<div class="ttext">
<h2><xsl:value-of select="umbraco.library:StripHtml($currentPage/title)" /></h2>
<xsl:value-of select="$currentPage/abstractText" disable-output-escaping="yes" />
</div>
</p>
</div>
<div class="ttext">
<xsl:if test="$currentPage/showMultipleColumns='1'">
<xsl:attribute name="class">showMultipleColumns</xsl:attribute>
</xsl:if>
<xsl:value-of select="$currentPage/bodyText" disable-output-escaping="yes" />
</div>
</xsl:template>
谢谢您的帮助。本杰明
编辑 - - - - - - - - -
我尝试添加一个 if 测试,但现在如果我将 $currentPage/image 替换为 1663,它会给我另一个错误: System.Xml.Xsl.XslTransformException: 要在路径表达式中使用结果树片段,首先将其转换为使用 msxsl:node-set() 函数进行节点集。
如果我让 $currentPage/image 我总是拥有: System.OverflowException: 对于 Int32 而言,值太大或太小。
这是xslt:
<xsl:variable name="atest" select="umbraco.library:GetMedia($currentPage/image, false())" />
<xsl:variable name="media">
<xsl:if test="$currentPage/image > 0">
<xsl:value-of select="$atest" />
</xsl:if>
</xsl:variable>
编辑2------------
在下面尝试这个总是得到错误:System.OverflowException:对于 Int32,值太大或太小。
<xsl:variable name="media" select="umbraco.library:GetMedia($currentPage/image, false())" />
<xsl:if test="$media">
<img src="{$media/umbracoFile}" class="left timg" />
</xsl:if>