Как проверить, что Request.QueryString имеет определенное значение или нет в ASP.NET?

У меня есть страница error.aspx. Если пользователь приходит на эту страницу, он будет искать путь ошибки в URL-методе page_load(), используя Request.QueryString["aspxerrorpath"], и он отлично работает.

Но если пользователь напрямую обратится к этой странице, он будет генерировать исключение, потому что aspxerrorpath не существует.

Как я могу проверить, что aspxerrorpath есть или нет?

Ответ 1

Вы можете просто проверить null:

if(Request.QueryString["aspxerrorpath"]!=null)
{
   //your code that depends on aspxerrorpath here
}

Ответ 2

Проверьте значение параметра:

// .NET < 4.0
if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]))
{
 // not there!
}

// .NET >= 4.0
if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"]))
{
 // not there!
}

Если он не существует, значение будет null, если оно существует, но не имеет значения, это будет пустая строка.

Я считаю, что вышеизложенное удовлетворит ваши потребности лучше, чем просто тест для null, поскольку пустая строка так же плоха для вашей конкретной ситуации.

Ответ 3

Чтобы проверить наличие пустой QueryString, вы должны использовать свойство Request.QueryString.HasKeys.

Чтобы проверить, присутствует ли ключ: Request.QueryString.AllKeys.Contains()

Затем вы можете получить значение ist и выполнить любую другую проверку, например isNullOrEmpty, и т.д.

Ответ 4

string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value

Вернется, если есть значение

Ответ 5

Вы также можете попробовать:

if (!Request.QueryString.AllKeys.Contains("aspxerrorpath"))
   return;

Ответ 6

Как насчет более прямого подхода?

if (Request.QueryString.AllKeys.Contains("mykey")

Ответ 7

Чтобы устранить проблему, напишите следующую строку на странице Page_Load.

if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return;

.Net 4.0 более подробно рассматривает нулевые, пустые или пробельные строки, используйте его, как показано в следующей строке:

if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return;

Это не приведет к запуску ваших следующих операторов (ваших бизнес-логик), если строка запроса не имеет aspxerrorpath.

Ответ 8

думаю, что проверка, которую вы ищете, такова:

if(Request.QueryString["query"] != null) 

Он возвращает null, потому что в этой строке запроса он не имеет значения для этого ключа.