Поиск ошибки с помощью GetMedia на форуме, я читал, что переменная i дает функции не целое.umbraco xslt getMedia error
Вот эта ошибка: 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>
Спасибо за вашу помощь. Benjamin
Редактировать ------------------
Я пытался добавить, если тест, но теперь это дает мне другую ошибку, если я заменить $ CurrentPage/image by 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>
Edit2 ------------
Попытка это ниже всегда получаю ошибку: 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>
Привет, я попробовал это и теперь сказал мне следующее: System.Xml.Xsl.XslTransformException: Чтобы использовать фрагмент результирующего дерева в выражении пути, сначала преобразуйте его в набор узлов, используя команду msxsl: node- set(). Для получения дополнительной информации см. Часть редактирования в моем сообщении. – Benjamin
Ваш тест неверен, вы изменили порядок своих строк в своем тесте. Попробуйте выполнить точный порядок моего примера. –
Я пробовал ваш пример, но всегда эту ошибку про int32. См. Мое редактирование 2 – Benjamin