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