今天發現一個很神奇的現象
在cshtml頁面中,使用@Request.QueryString,在<script>標簽內和在<html>文本標簽內所顯示的內容不一樣
如訪問http://localhost:60086/FakeLogin/?a=52&b=dfas
<script>"@Request.QueryString"</script>
頁面顯示的結果是
"a=52&b=dfas"
即對&進行了html轉義,這就導致b的值在后台querystring中取不到。
然而,如果不在script標簽內,則顯示的內容就是querystring的內容,即
a=52&b=dfas
之后我以為是razor引擎自動把script標簽內的后台內容轉義,但是我發現對於其他的需要轉義的字符如< " 等,都只是進行了簡單的urlencode,
比如,訪問http://localhost:60086/FakeLogin/?a=52&b=dfas<>
<script>標簽內顯示的結果是
a=52&b=dfas%3c%3e
不在<script>標簽內的結果
a=52&b=dfas%3c%3e
這個我暫時還不知道是什么原因,現在把這個問題記錄下來,如果有朋友知道也請不吝賜教