如何检查RouteData.Values是否不在asp.net网页表单中

本文关键字:asp net 网页 表单 是否 Values 何检查 检查 RouteData | 更新日期: 2023-09-27 18:20:34

我有一个友好的URL,可以像一样

示例:

  1. www.abc.com/news/

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

如果url与out year在一起,那么我显示最新的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."}

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

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()); }

如何检查RouteData.Values是否不在asp.net网页表单中

我使用的是.ToString(),这造成了问题。而只是使用低于代码的

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