Как узнать имя параметра строки запроса с помощью c#

#c# #asp.net

#c# #asp.net

Вопрос:

Я использую строку запроса с 2 параметрами name / DOB и id, в которых имя первого параметра изменяется в соответствии с необходимостью с DOB, т. Е. либо это может быть name, либо DOB одновременно, теперь я хочу что-то сделать на основе имени параметра, как я могу этого добиться.

Например, это URL www.example.com/detail.aspx?name=johnamp;id=10 это может быть www.example.com/detail.aspx?DOB=10/01/2009?id=10

псевдокод — это что-то вроде этого

 if(first parameter name == "DOB")
{
   // do something
} 
  

пожалуйста, дайте мне знать, смогу ли я этого добиться. Заранее спасибо.

Комментарии:

1. Порядок, в котором вы добавляете параметры строки запроса, обычно считается несущественным. Зачем вам это конкретно нужно?

2. Обратите внимание, что формат даты для вашего параметра DOB может вызвать у вас проблемы, косые черты могут быть проблемой, даже если они закодированы в URL.

Ответ №1:

Вы можете использовать Request.QueryString.AllKeys[0] для получения первого ключа строки запроса. Смотрите NameValueCollection.Все ключи в MSDN для получения дополнительной информации.

Кстати, вероятно, это плохой дизайн, чтобы рассчитывать на то, что строка запроса находится в каком-либо определенном порядке. Вместо этого проверьте наличие параметров строки запроса, подобных этому…

 if(!String.IsNullOrEmpty(Request.QueryString["DOB"])
{
//QS contains DB, now make sure it's a valid value
}
  

Ответ №2:

Строка запроса содержит набор ключей, вы можете использовать следующий код

 if(Request.QueryString.AllKeys.FirstOrDefault() == "DOB")
{
   // do something
}
  

В качестве альтернативы вы можете использовать Contains , чтобы узнать, имеет ли строка запроса желаемый ключ, не обязательно первый.

 if(Request.QueryString.AllKeys.Contains("DOB"))
{
   // do something
}
  

Комментарии:

1. Просто обратите внимание, убедитесь, что у вас есть using System.Linq в верхней части вашего класса, поскольку это зависит от метода расширения.