2015-11-04 44 views
0

我有一个可以像一个友好的URL如何检查是否RouteData.Values是不是在asp.net web表单

例如:

  1. www.abc.com/news/

  2. www.abc.com/news/year/

如果URL与出一年,然后我展示最新的20个新闻,否则我会让记者从日在微粒年

if (!string.IsNullOrEmpty(HttpContext.Current.Request.RequestContext.RouteData.Values["YEAR"].ToString())) { 
    _Year = int.Parse(HttpContext.Current.Request.RequestContext.RouteData.Values["YEAR"].ToString()); 
} 

上面的代码生成以下错误

[System.NullReferenceException] = {"Object reference not set to an instance of an object."}

我不知道如何解决这个错误。我如何检查路由值是否为空,以便我可以相应地执行代码。

的Global.asax代码

routes.MapPageRoute("news", "news/", "~/news.aspx", false, 
new RouteValueDictionary { 
    { 
     "path", "page-not-found" 
    }, { 
     "pagename", "page-not-found" 
    } 
}); 

routes.MapPageRoute("news_YearWise", "news/{YEAR}", "~/news.aspx", false, 
new RouteValueDictionary { 
    { 
     "YEAR", "0" 
    } 
}, 
new RouteValueDictionary { 
    { 
     "YEAR", "[0-9]{1,8}" 
    }, 
}); 

解决:

if (RouteData.Values["YEAR"] != null) 
    { _Year = int.Parse(RouteData.Values["YEAR"].ToString()); } 

回答

0

我用.ToString()这是产生问题。 只是使用下面的代码

if (RouteData.Values["YEAR"] != null) 
    { _Year = int.Parse(RouteData.Values["YEAR"].ToString()); }