2011-03-15 93 views
0

当我将这段代码放入页面以请求查询字符串时,我的页面正在返回一个什么都没有的href?QueryString链接帮助

代码在页:

<a href='<% String.Format("book.aspx?id=" + Request.QueryString["id"]); %>'>Test</a> 

结果:

<a href=''>Test</a> 
+0

@JonathanWood IDK结帐我的个人资料,我已经接受了所有问题的答案。 – Bob1254 2011-03-15 18:00:08

+0

@Jonathan Wood:有时会发生这种情况。 Stack Overflow有很多缓存。首先检查个人资料通常是值得的,也许如果这个人刚刚接受了其中的一些答案(对于少数问题,这个答案大幅度地改变了这个比例)。 – David 2011-03-15 18:01:36

回答

5

您需要使用<%=,而不是<%输出的String.Format页面的结果。现在你只是放弃结果。

+0

我在哪里可以阅读更多关于<%=和<%#以及<%#等等之间的区别。我已经在代码中看到了这些内容,但不知道它们的含义。 – Bob1254 2011-03-15 18:02:05

+0

@Bob,我忘记了标签实际上被称为什么,他们很难像谷歌(也许问另一个问题?)。基本上'<% %>'只是执行服务器端的代码。 '<%= %>'类似于调用'Response.Write()',它将直接向页面输出结果(这就是你想要的)。 '<%# %>'是一个数据绑定表达式,你可以在这里阅读http://msdn.microsoft.com/en-us/library/ms178366.aspx – Brandon 2011-03-15 18:08:15

+0

+1你知道,我也发现这些混淆的所有变化。不幸的是,谷歌几乎不可能这样做,因为谷歌对标点符号不太好。 – 2011-03-15 18:10:01

0

我不知道为什么你在那里的String.Format,你需要的是这样的:

<a href="book.aspx?id=<%=Request.QueryString["id"] %>">Test</a> 

而且,即使ASP.NET检查潜在危险的请求的值,这是很好的做法,无论是编码或验证这样的价值观:

<a href="book.aspx?id=<%=Server.HtmlEncode(Request.QueryString["id"]) %>">Test</a> 

<a href="book.aspx?id=<%=Convert.ToInt32(Request.QueryString["id"]) %>">Test</a>