У меня есть xsl view engine и я хочу вызвать стандартные помощники вида (например, UrlHelper.Action) из xsl.Но мне не удалось передать переменные числа параметров в вспомогательные методы.
Вспомогательный класс:
namespace Services
{
public class ViewHelper
{
// ...
public string DummyHelper(params string[] dummyArgs)
{
return String.Concat(dummyArgs);
}
}
}
Добавление вспомогательной поддержки для преобразования xsl:
var xsl = new XslCompiledTransform();
xsl.Load('MyView.xsl');
varc xsltArgs = new XsltArgumentList();
// Create helper, pass controller context as a param
var helper = new Services.ViewHelper(context));
xslt.AddExtensionObject("urn:helper", helper);
xsl.Transform(xmlDocument, xsltArgs, output);
Oneсценариев xsl, использующих хелпер:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:h ="urn:helper"
exclude-result-prefixes="h msxsl"
>
<xsl:template match="/">
<xsl:value-of select="h:DummyHelper('lorem', 'ipsum', 'dolor', 'sit', 'amet')"/>
</xsl:template>
</xsl:stylesheet>
Возникает исключительная ситуация с сообщением: не удается найти mthod DummyHelper с 5 аргументами.