2012-08-07 32 views
5

estoy usando la siguiente línea de código para comprobar si el UrlReferrer es nullTratando de comprobar si urlreferrer es nulo

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

Simplemente me da un error de:

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

I Soy nuevo en asp y he buscado pero no puedo encontrar nada que responda mi pregunta. Lo que me confunde es nula si reemplazo de este modo:

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

... y el AbsolutePath es de hecho/Inicio, el código funciona bien, he aquí yo estoy pidiendo lo mismo aquí, pero con null?

Respuesta

10

Request.UrlReferrer es nulo si no hay un referente, que hace referencia a su Request.UrlReferrer.AbsolutePath (una propiedad de un objeto nulo) lanzar una excepción de referencia nula.

En su lugar, intente;

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

Muchas gracias, que funcionaba un lujo! –

+0

Quizás quieras considerar probar ambos sin embargo. @if (Request.UrlReferrer == null && String.IsNullOrEmpty (Request.UrlReferrer.AbsolutePath)) (Si el primero es nulo, el segundo no se activará y, por lo tanto, evitará la excepción. Si el primero tiene datos, pero el camino del referer es nulo o vacío, la condición aún fallará ya que no hay realmente un referer aunque el objeto no sea nulo) – Pluc

0

Si es necesario tener camino actual de la página actual, es posible utilizar éste:

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