Ich habe eine error.aspx
Seite. Wenn ein Benutzer zu dieser Seite kommt, ruft er den Fehlerpfad in der page_load()
Methoden-URL mit ab Request.QueryString["aspxerrorpath"]
und es funktioniert einwandfrei.
Wenn ein Benutzer jedoch direkt auf diese Seite zugreift, wird eine Ausnahme generiert, da diese aspxerrorpath
nicht vorhanden ist.
Wie kann ich überprüfen, ob aspxerrorpath
es da ist oder nicht?
Request.QueryString.Count != 0
wird Ihnen einfach sagen, ob es überhaupt keine Parameter gibt .Antworten:
Sie können einfach überprüfen nach
null
:if(Request.QueryString["aspxerrorpath"]!=null) { //your code that depends on aspxerrorpath here }
quelle
Überprüfen Sie den Wert des Parameters:
// .NET < 4.0 if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) { // not there! } // .NET >= 4.0 if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) { // not there! }
Wenn es nicht existiert, ist der Wert
null
, wenn es existiert, aber kein Wert festgelegt ist, eine leere Zeichenfolge.Ich glaube, dass das oben Genannte Ihren Anforderungen besser entspricht als nur ein Test
null
, da eine leere Zeichenfolge für Ihre spezifische Situation genauso schlecht ist.quelle
IsNullOrWhiteSpace
?Um nach einem leeren QueryString zu suchen, sollten Sie die
Request.QueryString.HasKeys
Eigenschaft verwenden.So überprüfen Sie, ob der Schlüssel vorhanden ist:
Request.QueryString.AllKeys.Contains()
Dann können Sie den Wert von ist abrufen und jede andere gewünschte Prüfung durchführen, z. B. isNullOrEmpty usw.
quelle
Request.QueryString.AllKeys.Contains()
gibt tatsächlich false zurück, wenn der Schlüssel vorhanden ist, aber keinen Wert hat.Sie können auch versuchen:
if (!Request.QueryString.AllKeys.Contains("aspxerrorpath")) return;
quelle
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value
Wird zurückgegeben, wenn ein Wert vorhanden ist
quelle
Was ist mit einem direkteren Ansatz?
if (Request.QueryString.AllKeys.Contains("mykey")
quelle
Um Ihr Problem zu beheben, schreiben Sie die folgende Zeile in die Page Load-Methode Ihrer Seite.
if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return;
.Net 4.0 bietet einen genaueren Blick auf Null-, Leer- oder Leerzeichenfolgen. Verwenden Sie es wie in der folgenden Zeile gezeigt:
if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return;
Dadurch werden Ihre nächsten Anweisungen (Ihre Geschäftslogik) nicht ausgeführt, wenn die Abfragezeichenfolge keinen Aspxerrorpath enthält.
quelle
Ich denke, der Scheck, den Sie suchen, ist folgender:
if(Request.QueryString["query"] != null)
Es wird zurückgegeben,
null
weil es in dieser Abfragezeichenfolge keinen Wert für diesen Schlüssel hat.quelle