2011-05-04 38 views
1

我想直接从一把umbraco模板获得查询字符串的保持,但似乎无法推测出来..如何访问Umbraco模板中的查询字符串?

例如: /mypage.aspx?p=bek

我可以<%= HttpContext.Current.Request做[ “p”]%>,但我想它在一个领域...

事情是这样的:

任何想法?

+1

是的,我正要用同样的解决方案来回答。看起来不错。 – BeaverProj 2011-05-04 18:47:32

+1

这看起来可能会让您的网站容易受到XSS攻击。在那里你反映了未经验证的输入到页面。值得检查的是,你的代码不会让你打开这个。 http://en.wikipedia.org/wiki/Cross-site_scripting – 2011-05-05 08:54:21

+1

好点蒂姆。 umbraco.library:RequestQueryString('Yourstring')会更安全吗?它是否执行任何XSS检查? – BeaverProj 2011-05-05 17:06:25

回答

2

好的,我修好了。

发现这一点: http://forum.umbraco.org/yaf_postst6663_Get-querystring-in-template.aspx

如果任何人有兴趣,你下面.. 创建一个名为“QueryStringExtractor”一个XSLT文件并粘贴下面的代码属于它的地方。

<xsl:param name="currentPage"/> 
<xsl:variable name="yourvalue" select="//macro/myparam" /> 

<xsl:template match="/"> 

<!-- start writing XSLT --> 
<xsl:value-of select="$yourvalue" /> 

</xsl:template> 

保存并更新Umbraco页面,您将在“Macros”下看到与同一个namne的宏。 在宏中添加参数“myparam”(我把它作为文本)。保存!

然后在您的模板中,只需通过以下代码即可开始使用!

<ul> 
    <umbraco:Macro Alias="QueryStringExtractor" myparam="[@p]" runat="server"></umbraco:Macro> 
</ul> 

所以现在当你输入查询字符串“?p = something”时,你会在页面上看到“东西”。

请注意,您可以将任何“p”传递给宏。

希望这可以帮助别人!

相关问题