编码参数将其传递到其他列表 /页面的最佳方法是什么?
题
我想知道将这些参数(带有空间或其他不安全字符)的最佳方法传递给另一个列表时。
和 DDWRT:URLENCODE ?
<xsl:variable name="MyURL"
select="concat('../../Lists/MyList/MyView.aspx?MyID=',@ID,'&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,'&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函数(正如您所发现的那样),我会认为这也可以。
您可以通过在不同的上下文中调用此功能来验证此功能吗?