尝试检查urlreferrer是否为空。

7
我正在使用以下代码行来检查UrlReferrer是否为null

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

但是它给我一个错误提示:
System.NullReferenceException: Object reference not set to an instance of an object.

我是asp的新手,已经搜索过但似乎找不到任何能回答我的问题的东西。 让我困惑的是如果我这样替换null:

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

...而且AbsolutePath确实是/Home,那么代码就可以正常工作,我这里是否正在询问同样的事情,只是用了null

2个回答

11

Request.UrlReferrer 为空表示没有引荐来源,因此对于 null 对象的 Request.UrlReferrer.AbsolutePath 属性的引用将抛出空引用异常。

相反,尝试使用以下代码;

@if (Request.UrlReferrer == null)

你可能想要考虑测试两个条件。@if (Request.UrlReferrer == null && String.IsNullOrEmpty(Request.UrlReferrer.AbsolutePath)) (如果第一个条件为空,那么第二个条件就不会触发,从而避免异常。如果第一个条件有数据但是引用路径为空,条件仍将失败,因为即使对象不为空,也没有引用者。) - Pluc

1
如果您需要获取当前页面的路径,可以使用以下代码:
var absoluteUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;
string returnUrl = absoluteUrl.Replace(System.Web.HttpContext.Current.Request.Url.PathAndQuery, "/");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接