c# razor @ html转义

今天发现一个很神奇的现象

在cshtml页面中,使用@Request.QueryString,在<script>标签内和在<html>文本标签内所显示的内容不一样

如访问http://localhost:60086/FakeLogin/?a=52&b=dfas

<script>"@Request.QueryString"</script>

页面显示的结果是

"a=52&amp;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&amp;b=dfas%3c%3e

不在<script>标签内的结果

a=52&b=dfas%3c%3e

这个我暂时还不知道是什么原因,现在把这个问题记录下来,如果有朋友知道也请不吝赐教

 

posted on 2015-07-13 11:44  罗文兴  阅读(3440)  评论(0编辑  收藏  举报