我有一个页面正在根据查询字符串的值执行一些操作。但是我最近注意到,当查询字符串包含“&”字符时,这会中断。
我知道我可以编写一些代码来翻译父页面上的“&”字符,但我必须相信有更好的方法来做到这一点。
这是一个示例:查询字符串:运动科学与体育研究这仅返回“运动科学”
这是我必须获取字符串的代码:
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);
更新:
不幸的是,这将生成一个丑陋的 URL:
dept=Exercise%20Science%20%26%20Sports%20Studies
与号( &
) 字符被定义为分隔请求参数,因此除了对其进行编码之外,没有其他方法可以将其放入此类参数中。
您不需要加密参数,只需对其进行编码。这种情况的常见编码是所谓的URL 编码。这种编码的好处是正常的字母和数字保持原样。只有特殊字符用百分号序列编码。
是的,该&
字符会破坏查询字符串。它用作分隔参数的元字符。如果需要&
在查询参数中包含字符,则必须将其编码为%26
. 在 ASP.Net 上,您可以使用在页面范围内HttpUtility.UrlEncode
的对象上调用的方法来执行此操作。Server
您应该对参数进行编码,例如: HttpUtility.UrlEncode(myUrl);
和号用于分隔参数。
您需要对参数进行 URL 编码。它们应该在 Request.QueryString 中自动为您解码。