3

如果在使用 URL 路由时查询字符串中不存在以下语句的空异常错误,我该如何处理以下语句的 NullReferenceException

string lang = RouteData.Values["Language"].ToString();

错误详情

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详情:

System.NullReferenceException:对象引用未设置为对象的实例。

4

3 回答 3

4

较新版本的 .NET 支持:

string lang = (RouteData.Values["Language"] ?? String.Empty).ToString();

对于其他数据类型也很方便:

int langId = Convert.ToInt32(RouteData.Values["LanguageId"] ?? 0);
于 2012-10-08T22:34:30.010 回答
4

您收到此异常是因为 RouteDate.Values["Language"] 为 null 并且您正在对其应用实例方法 .ToString。
只需添加一个 if 来检查 null

string lang="";
if(RouteData.Values["Language"] != null)
      lang = RouteData.Values["Language"].ToString();
于 2012-05-10T11:57:48.467 回答
1

尝试这个:

string lang = RouteData.Values["Language"] != null
                   ? RouteData.Values["Language"].ToString()
                   : String.Empty;
于 2012-05-10T12:10:02.953 回答