C# 当querystring不存在时,值返回NullReferenceException

C# 当querystring不存在时,值返回NullReferenceException,c#,routing,C#,Routing,如果在使用URL路由时查询字符串中不存在以下语句的NullReferenceException错误,那么如何处理该语句的NullReferenceException string lang = RouteData.Values["Language"].ToString(); 错误详细信息 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 例外情况详情: System.NullReferenceException:对象引用未设置为对象的实

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

string lang = RouteData.Values["Language"].ToString();
错误详细信息

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

例外情况详情:

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


您获得此异常是因为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;

较新版本的.NET支持:

string lang = (RouteData.Values["Language"] ?? String.Empty).ToString();
对于其他数据类型也很方便:

int langId = Convert.ToInt32(RouteData.Values["LanguageId"] ?? 0);

@谢谢,我用过了!string.IsNullorEmpty,这也给了我错误。