假设我有一个像这样的 url: www.myhost.com/mypage?color=blue
在 Asp.Net Core 中,我希望通过执行以下操作来获得颜色查询参数值:
string color = Request.Query["color"];
但是结果是 Request.Query["color"]
返回的值是 StringValues
而不是 string
,这是为什么呢?
显然,StringValues
类型可以包含一个字符串数组,并且支持隐式转换为 string[]
,这很酷,但是为什么查询参数值需要这种转换呢?
必须得到这样的价值似乎有些奇怪:
string color = Request.Query["color"].ToString();
更糟糕的是,检查一个值以查看是否指定了查询参数不能再这样做了
if(Request.Query["color"] == null) {
//param was not specified
}
而是必须这样检查
if(Request.Query["color"].Count == 0) {
//param was not specified
}
既然一个查询参数不能有多个值(据我所知) ,为什么 Request.Query["color"]
返回的是 StringValues
对象而不是字符串?