2015-11-04 19 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()); }