我想知道将这些参数(带有空间或其他不安全字符)的最佳方法传递给另一个列表时。

DDWRT:URLENCODE ?

<xsl:variable name="MyURL"
  select="concat('../../Lists/MyList/MyView.aspx?MyID=',@ID,'&amp;MyName=',ddwrt:UrlEncode(string(@Title)))" />

问题是如何在页面上读取此值?这个失败:

<xsl:value-of select="$MyName" />
有帮助吗?

解决方案

我发现无需使用ddwrt:urlencode编码参数。

因此 第一的 页面变为:

1)构建URL

<xsl:variable name="MyURL" select="concat('../../Lists/MyList/MyView.aspx?ID=',@ID,'&amp;MyName=', @Title)" />

2)创建超链接

<a onclick="GoToLink(this); return false;" target="_self">
  <xsl:attribute name="href">
    <xsl:value-of select="$MyURL" />
  </xsl:attribute>
  Click My Link
</a>

代码打开 第二 页面只是:

<ParameterBindings>
 ...
    <ParameterBinding Name="MyName" Location="QueryString(MyName)" DefaultValue="-"/>
</ParameterBindings>

<xsl:stylesheet />
  <xsl:param name="MyName" />
...

MyName : '<xsl:value-of select="$MyName" />'

其他提示

您一定需要 URLEncode 在URL中传递的值以某种方式传递。在普通的.NET代码中,这是使用 HttpUtility.UrlEncode(), ,但是,如果DDWRT名称空间具有XSL函数(正如您所发现的那样),我会认为这也可以。

您可以通过在不同的上下文中调用此功能来验证此功能吗?

许可以下: CC-BY-SA归因
scroll top