我有一个基于查询字符串的值执行某些操作的页面。不过,我最近注意到,当查询字符串包含'&'字符时,这会中断。'&'字符中断查询字符串
我知道我可以编写一些代码来翻译父页上的'&'字符,但我不得不相信有更好的方法来做到这一点。
下面是一个例子: 查询字符串:运动科学&体育研究 这仅返回“运动科学”
这里是我得到的字符串代码:
string selectedDept = Request.QueryString [ "dept" ];
我会因为页面有时直接链接,所以不要加密URL。
我有一个基于查询字符串的值执行某些操作的页面。不过,我最近注意到,当查询字符串包含'&'字符时,这会中断。'&'字符中断查询字符串
我知道我可以编写一些代码来翻译父页上的'&'字符,但我不得不相信有更好的方法来做到这一点。
下面是一个例子: 查询字符串:运动科学&体育研究 这仅返回“运动科学”
这里是我得到的字符串代码:
string selectedDept = Request.QueryString [ "dept" ];
我会因为页面有时直接链接,所以不要加密URL。
您不需要加密,您需要在生成Url之前对字符串进行编码。
如果您正在使用MVC,你可以使用:
var url = "dept=" + Url.Encode(strDept);
否则,你也可以使用:
var url = "dept=" + HttpUtility.UrlEncode(strDept);
更新:
不幸的是,这将产生一个丑陋的网址:
dept=Exercise%20Science%20%26%20Sports%20Studies
的符号(&
)字符是定义到单独的请求参数,所以没有其他的方式来获得比来编码它这样的参数内。
你不需要加密的参数,只是给编码吧。这种情况下的常见编码是所谓的URL encoding。这种编码的好处在于,普通字母和数字保持原样;只有特殊字符使用百分号符号序列编码。
你应该编码你的参数,如: HttpUtility.UrlEncode(myUrl);
&符号用于分隔参数。
您需要对参数进行URL编码。它们应该在Request.QueryString中自动解码。
是的,&
字符打破查询字符串。它被用作分离参数的元字符。如果您需要在查询参数中包含&
字符,则必须将其编码为%26
。在ASP.Net上,您可以使用HttpUtility.UrlEncode
方法执行此操作,该方法在页面范围内的Server
对象上调用。
您需要对参数进行URL编码。它们应该在Request.QueryString中自动解码。 – Lloyd
使用'HttpUtility.UrlEncode'和'HttpUtility.UrlDecode' –