#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
в верхней части вашего класса, поскольку это зависит от метода расширения.