如果在使用 URL 路由时查询字符串中不存在以下语句的空异常错误,我该如何处理以下语句的 NullReferenceException
string lang = RouteData.Values["Language"].ToString();
错误详情
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详情:
System.NullReferenceException:对象引用未设置为对象的实例。
较新版本的 .NET 支持:
string lang = (RouteData.Values["Language"] ?? String.Empty).ToString();
对于其他数据类型也很方便:
int langId = Convert.ToInt32(RouteData.Values["LanguageId"] ?? 0);
您收到此异常是因为 RouteDate.Values["Language"] 为 null 并且您正在对其应用实例方法 .ToString。
只需添加一个 if 来检查 null
string lang="";
if(RouteData.Values["Language"] != null)
lang = RouteData.Values["Language"].ToString();
尝试这个:
string lang = RouteData.Values["Language"] != null
? RouteData.Values["Language"].ToString()
: String.Empty;