2011-03-15 92 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>