2012-08-07 15 views
5

Sto usando la seguente riga di codice per verificare se il UrlReferrer è nullCercando di controllare se urlreferrer è null

@if (Request.UrlReferrer.AbsolutePath == null)

E 'appena mi dà un errore di:

System.NullReferenceException: Object reference not set to an instance of an object. 

I Sono nuovo ad asp e ho dato la caccia ma non riesco a trovare nulla che risponda alla mia domanda. La cosa che mi confonde è che se sostituisco nulla in questo modo:

@if (Request.UrlReferrer.AbsolutePath == "/Home")

... e l'AbsolutePath è davvero/casa, il codice funziona bene, sicuramente sto chiedendo la stessa cosa qui, ma con null?

risposta

10

Request.UrlReferrer è nullo se non c'è referrer, che rende il vostro riferimento al Request.UrlReferrer.AbsolutePath (una proprietà su un oggetto null) un'eccezione di riferimento null.

Invece, prova;

@if (Request.UrlReferrer == null) 
+0

Molte grazie, che ha funzionato a meraviglia! –

+0

Si potrebbe prendere in considerazione la possibilità di testare entrambi. @if (Request.UrlReferrer == null && String.IsNullOrEmpty (Request.UrlReferrer.AbsolutePath)) (Se il primo è nullo, il secondo non si attiverà e quindi eviterà l'eccezione.Se il primo ha dati ma il percorso del referente è nullo o vuoto, la condizione continuerà a fallire in quanto non esiste un vero riferimento anche se l'oggetto non è nullo) – Pluc

0

Se avete bisogno di avere corrente percorso della pagina corrente, è possibile utilizzare questo:

var absoluteUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; 
string returnUrl = absoluteUrl.Replace(System.Web.HttpContext.Current.Request.Url.PathAndQuery, "/"); 
Problemi correlati