如何将数组或矢量从 XSLT 文件本布拉科传递给我的 c# 函数



我正在使用Umbraco V 7.5.4,我有一些XSLT文件。 其中一个有一个 html 的"选择",其中包含一个 for-each,可以根据带来的项目数量动态创建选项。

我想获取这些项目并将它们放在一个数组或向量中,该数组或向量可以传递给我的 c# 函数,该函数将删除重音,然后返回一个向量。 此矢量将没有重音,以便我可以创建选项。

有人知道我该怎么做吗?

我是Umbraco的新手,我已经完成了这个项目,所以我只是在做一些修复。

这是选择

<select class="form-control" id="cidade" name="cidade">
<option value="">Selecione</option>
<xsl:for-each select="$currentPage//*[@isDoc and @nodeType = 1000 and not(cidade=following::cidade)]">
<xsl:sort select="cidade" order="ascending" data-type="text"/>   
<option value="{cidade}"><xsl:value-of select="cidade"/></option>         
</xsl:for-each>
</select>

这是我的 C# 函数

<msxsl:script language="C#" implements-prefix="user"> 
<msxsl:assembly name="Design" />
<msxsl:using namespace="Design" />   
<![CDATA[       
public static string ResolverCidades()
{
string[] palavras = null; //receive a vetor
var testar = new Design.Help.Helper().ResolverNomeCidades(palavras);
var concatenar = "";
foreach(var item in testar){
concatenar += item + " ";
}
return concatenar;
}
]]>

所以我在这个函数中所做的是接收一个向量,从每个向量中删除重音,连接所有重音,并将结果作为字符串返回。

听起来您的真正问题是您需要生成包含重音字符的字符串的仅限 ASCII 版本。 我不熟悉 Umbraco,但从上面的示例中,很明显您可以使用 XSLT - 因此您根本不需要 C#。

这似乎是关键行:

<option value="{cidade}"><xsl:value-of select="cidade"/></option>

如果需要value属性的非重音字符串,请更改以下内容:

value="{cidade}"

。对此:

value="{translate(cidade, 'áàãéèíìóòúù', 'aaaeeiioouu')}"

潜在的棘手部分是确保áàãéèíìóòúù字符串包含输入中的*所有*重音字符,并且aaaeeiioouu字符串在完全相同的字符串位置具有非重音版本。 例如,如果在translate()调用中包含重音字符串包含ñ作为第六个字符,则非重音字符串必须包含n作为第六个字符,否则您将获得奇怪的结果。

在此处阅读有关translate()XSLT 函数的详细信息:

  • https://www.w3.org/TR/xpath-functions-30/#func-translate

translate()函数在 XSLT 1.0 中受支持,因此应受任何符合标准的 XSLT 1.0 处理器的支持。

最新更新