其他查询参数信息
虽然不是这个问题的直接部分,但这些附加信息也可能很有用。
分隔符
ASP.NET 不支持由 ';' 分隔的查询参数,服务器支持的 W3C recommends 可替代 '&'。
以“=”开头的参数
以'=' 开头的查询参数被认为有一个键,即string.Empty。不要将此与null 的键混淆。例如"/some-controller/some-action?=baz" 有一个值,其键为string.Empty,其值为baz。
多个“=”字符
如果有多个'=' 字符,则key 是第一个'=' 之前的所有字符,value 是它之后的所有字符。
例如"/some-controller/some-action?foo=bar=baz" 有一个参数,其键为"foo",值为bar=baz。
另一个示例"/some-controller/some-action?eggs==spam" 有一个参数,其键为"eggs",值为"=spam"。
多个同名参数
还支持同名的多个参数,正如我在其他答案中所暗示的那样。
例如,如果 URL 是 "/some-controller/some-action?foo=bar&foo=baz",那么 Request.QueryString["foo"] 的结果是 `"bar,baz"。
如果您希望每个字符串分开,请使用Response.QueryString.GetValues("foo"),它会返回一个字符串数组。
示例
以下高度难以理解的 URL 将被视为具有六个参数:
"/some-controller/some-action?=baz&foo=bar&edit&spam=eggs=ham&==&"
他们是:
+--------------+--------------+
| Key | Value |
+--------------+--------------+
| string.Empty | "baz" |
| "foo" | "bar" |
| null | "edit" |
| "spam" | "eggs=ham" |
| string.Empty | "=" |
| null | string.Empty |
+--------------+--------------+