Допустим, у меня есть 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
, а не строку?