0

我有一个页面正在根据查询字符串的值执行一些操作。但是我最近注意到,当查询字符串包含“&”字符时,这会中断。

我知道我可以编写一些代码来翻译父页面上的“&”字符,但我必须相信有更好的方法来做到这一点。

这是一个示例:查询字符串:运动科学与体育研究这仅返回“运动科学”

这是我必须获取字符串的代码:

string selectedDept = Request.QueryString [ "dept" ];

我不希望对 URL 进行加密,因为这些页面有时会直接链接到。

4

5 回答 5

5

您不需要加密,您需要在生成 Url 之前对字符串进行编码。

如果您使用的是 MVC,则可以使用:

var url = "dept=" + Url.Encode(strDept);

否则,您还可以使用:

var url = "dept=" + HttpUtility.UrlEncode(strDept);

更新

不幸的是,这将生成一个丑陋的 URL:

dept=Exercise%20Science%20%26%20Sports%20Studies
于 2012-10-22T13:01:19.083 回答
1

与号( &) 字符被定义为分隔请求参数,因此除了对其进行编码之外,没有其他方法可以将其放入此类参数中。

您不需要加密参数,只需对其进行编码。这种情况的常见编码是所谓的URL 编码。这种编码的好处是正常的字母和数字保持原样。只有特殊字符用百分号序列编码。

于 2012-10-22T12:59:44.840 回答
1

是的,该&字符会破坏查询字符串。它用作分隔参数的元字符。如果需要&在查询参数中包含字符,则必须将其编码为%26. 在 ASP.Net 上,您可以使用在页面范围内HttpUtility.UrlEncode的对象上调用的方法来执行此操作。Server

于 2012-10-22T13:01:50.190 回答
0

您应该对参数进行编码,例如: HttpUtility.UrlEncode(myUrl);

于 2012-10-22T13:00:04.780 回答
0

和号用于分隔参数。

您需要对参数进行 URL 编码。它们应该在 Request.QueryString 中自动为您解码。

于 2012-10-22T13:00:24.763 回答