Ответ 1
Вы можете просто проверить null
:
if(Request.QueryString["aspxerrorpath"]!=null)
{
//your code that depends on aspxerrorpath here
}
У меня есть страница error.aspx
. Если пользователь приходит на эту страницу, он будет искать путь ошибки в URL-методе page_load()
, используя Request.QueryString["aspxerrorpath"]
, и он отлично работает.
Но если пользователь напрямую обратится к этой странице, он будет генерировать исключение, потому что aspxerrorpath
не существует.
Как я могу проверить, что aspxerrorpath
есть или нет?
Вы можете просто проверить null
:
if(Request.QueryString["aspxerrorpath"]!=null)
{
//your code that depends on aspxerrorpath here
}
Проверьте значение параметра:
// .NET < 4.0
if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]))
{
// not there!
}
// .NET >= 4.0
if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"]))
{
// not there!
}
Если он не существует, значение будет null
, если оно существует, но не имеет значения, это будет пустая строка.
Я считаю, что вышеизложенное удовлетворит ваши потребности лучше, чем просто тест для null
, поскольку пустая строка так же плоха для вашей конкретной ситуации.
Чтобы проверить наличие пустой QueryString, вы должны использовать свойство Request.QueryString.HasKeys.
Чтобы проверить, присутствует ли ключ: Request.QueryString.AllKeys.Contains()
Затем вы можете получить значение ist и выполнить любую другую проверку, например isNullOrEmpty, и т.д.
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value
Вернется, если есть значение
Вы также можете попробовать:
if (!Request.QueryString.AllKeys.Contains("aspxerrorpath"))
return;
Как насчет более прямого подхода?
if (Request.QueryString.AllKeys.Contains("mykey")
Чтобы устранить проблему, напишите следующую строку на странице Page_Load.
if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return;
.Net 4.0 более подробно рассматривает нулевые, пустые или пробельные строки, используйте его, как показано в следующей строке:
if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return;
Это не приведет к запуску ваших следующих операторов (ваших бизнес-логик), если строка запроса не имеет aspxerrorpath.
думаю, что проверка, которую вы ищете, такова:
if(Request.QueryString["query"] != null)
Он возвращает null
, потому что в этой строке запроса он не имеет значения для этого ключа.