當我將這段代碼放入頁面以請求查詢字符串時,我的頁面正在返回一個什麼都沒有的href?QueryString鏈接幫助
代碼在頁:
<a href='<% String.Format("book.aspx?id=" + Request.QueryString["id"]); %>'>Test</a>
結果:
<a href=''>Test</a>
當我將這段代碼放入頁面以請求查詢字符串時,我的頁面正在返回一個什麼都沒有的href?QueryString鏈接幫助
代碼在頁:
<a href='<% String.Format("book.aspx?id=" + Request.QueryString["id"]); %>'>Test</a>
結果:
<a href=''>Test</a>
您需要使用<%=
,而不是<%
輸出的String.Format頁面的結果。現在你只是放棄結果。
我在哪裏可以閱讀更多關於<%=和<%#以及<%#等等之間的區別。我已經在代碼中看到了這些內容,但不知道它們的含義。 – Bob1254 2011-03-15 18:02:05
@Bob,我忘記了標籤實際上被稱爲什麼,他們很難像谷歌(也許問另一個問題?)。基本上'<% %>'只是執行服務器端的代碼。 '<%= %>'類似於調用'Response.Write()',它將直接向頁面輸出結果(這就是你想要的)。 '<%# %>'是一個數據綁定表達式,你可以在這裏閱讀http://msdn.microsoft.com/en-us/library/ms178366.aspx – Brandon 2011-03-15 18:08:15
+1你知道,我也發現這些混淆的所有變化。不幸的是,谷歌幾乎不可能這樣做,因爲谷歌對標點符號不太好。 – 2011-03-15 18:10:01
我不知道爲什麼你在那裏的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>
@JonathanWood IDK結帳我的個人資料,我已經接受了所有問題的答案。 – Bob1254 2011-03-15 18:00:08
@Jonathan Wood:有時會發生這種情況。 Stack Overflow有很多緩存。首先檢查個人資料通常是值得的,也許如果這個人剛剛接受了其中的一些答案(對於少數問題,這個答案大幅度地改變了這個比例)。 – David 2011-03-15 18:01:36