web-dev-qa-db-fra.com

Comment vérifier que Request.QueryString a une valeur spécifique ou non dans ASP.NET?

J'ai une page error.aspx. Si un utilisateur accède à cette page, il récupérera le chemin d'erreur dans l'URL de la méthode page_load() à l'aide de Request.QueryString["aspxerrorpath"] Et tout fonctionnera correctement.

Mais si un utilisateur accède directement à cette page, il générera une exception car aspxerrorpath n'y est pas.

Comment puis-je vérifier que aspxerrorpath existe ou non?

67
Peeyush

Vous pouvez simplement vérifier pour null:

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

Recherchez la valeur du paramètre:

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

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

S'il n'existe pas, la valeur sera null, si elle existe, mais n'a pas de valeur définie, ce sera une chaîne vide.

Je pense que ce qui précède répondra mieux à vos besoins qu’un simple test de null, car une chaîne vide est tout aussi mauvaise pour votre situation spécifique.

35
Oded

Pour rechercher une chaîne de requête vide, vous devez utiliser la propriété Request.QueryString.HasKeys.

Pour vérifier si la clé est présente: Request.QueryString.AllKeys.Contains()

Ensuite, vous pouvez obtenir la valeur de ist et effectuer toute autre vérification, comme isNullOrEmpty, etc.

11
MarianoC

Vous pouvez aussi essayer:

if (!Request.QueryString.AllKeys.Contains("aspxerrorpath"))
   return;
8
shapiro yaacov
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value

Reviendra s'il y a une valeur

8
Peter

Qu'en est-il d'une approche plus directe?

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

pensez que le chèque que vous cherchez est ceci:

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

Il retourne null car, dans cette chaîne de requête, il n'a aucune valeur pour cette clé.

2
user5690126

Pour résoudre votre problème, écrivez la ligne suivante dans la méthode Page_Load de votre page.

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

.Net 4.0 offre une vue plus précise des chaînes nulles, vides ou d'espaces, utilisez-le comme indiqué à la ligne suivante:

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

Cela n'exécutera pas vos prochaines instructions (votre logique d'entreprise) si la chaîne de requête n'a pas aspxerrorpath.

2
Imran Rizvi