2012-08-07 8 views
5

Używam następujący wiersz kodu w celu sprawdzenia, czy UrlReferrer jest nullPróba sprawdzenia, czy urlreferrer jest null

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

To właśnie daje mi błąd:

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

I Jestem nowy w asp i polowałem, ale nie mogę znaleźć niczego, co mogłoby odpowiedzieć na moje pytanie. Rzecz, która mnie myli to czy mogę wymienić zerowy tak:

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

... i AbsolutePath jest rzeczywiście/Home, kod działa dobrze, na pewno Pytam o to samo tutaj, ale z null?

Odpowiedz

10

Request.UrlReferrer jest null, jeśli nie ma wywołującej, która sprawia, że ​​odniesienie do Request.UrlReferrer.AbsolutePath (właściwość na obiekcie null) rzucenia wyjątku null odniesienia.

Zamiast tego spróbuj;

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

Wielkie dzięki, że pracowała doskonale! –

+0

Możesz jednak rozważyć testowanie obu. @if (Request.UrlReferrer == null && String.IsNullOrEmpty (Request.UrlReferrer.AbsolutePath)) (Jeśli 1. ma wartość null, to 2. nie uruchomi i dlatego uniknie wyjątku .Jeśli 1. ma dane, ale ścieżka odsyłająca jest wartość pusta lub pusta, warunek nadal będzie się nie sprawdzać, ponieważ nie istnieje referer, nawet jeśli obiekt nie był pusty) – Pluc

0

Jeśli trzeba mieć bieżącą ścieżkę bieżącej strony, można użyć tego:

var absoluteUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; 
string returnUrl = absoluteUrl.Replace(System.Web.HttpContext.Current.Request.Url.PathAndQuery, "/"); 
Powiązane problemy