"System.NullReferenceException" 在 MVC 中使用 Session
"System.NullReferenceException" for Using Session in MVC
在我的 MVC 项目中,我使用的会话值如
var empId = Convert.ToInt32(Session["EmpId"].ToString());
我收到异常:
“Project.Web.dll 中发生类型 'System.NullReferenceException' 的异常,但未在用户代码中处理。
附加信息:对象引用未设置到对象的实例。"
您必须检查 null
如下所示:-
var empId = Convert.ToInt32((Session["EmpId"] ?? 0).ToString());
一种更有效的方式来完成您的要求:-
int temp = 0;
var empId = int.TryParse( Convert.ToString( Session["EmpId"] ),out temp );
使用前先检查是否为空
var empId = Session["EmapId"] != null ? Convert.ToInt32(Session["EmapId"]) : 0;
当您在空对象上调用方法时会发生此错误。在你的例子中 Session["EmpId"]
的值是 NULL
.
这意味着您正在调用 NULL.ToString()
,这是无效的,因此会引发错误。
您可以使用 null coaleascing
运算符避免错误,或者在对其执行任何操作之前简单地检查 null。
解决方案:
if(Session["EmpId"] == null)
//do something
else
var empId = Convert.ToInt32(Session["EmpId"].ToString());
或者你可以在上面查看我的 blog post
在我的 MVC 项目中,我使用的会话值如
var empId = Convert.ToInt32(Session["EmpId"].ToString());
我收到异常:
“Project.Web.dll 中发生类型 'System.NullReferenceException' 的异常,但未在用户代码中处理。
附加信息:对象引用未设置到对象的实例。"
您必须检查 null
如下所示:-
var empId = Convert.ToInt32((Session["EmpId"] ?? 0).ToString());
一种更有效的方式来完成您的要求:-
int temp = 0;
var empId = int.TryParse( Convert.ToString( Session["EmpId"] ),out temp );
使用前先检查是否为空
var empId = Session["EmapId"] != null ? Convert.ToInt32(Session["EmapId"]) : 0;
当您在空对象上调用方法时会发生此错误。在你的例子中 Session["EmpId"]
的值是 NULL
.
这意味着您正在调用 NULL.ToString()
,这是无效的,因此会引发错误。
您可以使用 null coaleascing
运算符避免错误,或者在对其执行任何操作之前简单地检查 null。
解决方案:
if(Session["EmpId"] == null)
//do something
else
var empId = Convert.ToInt32(Session["EmpId"].ToString());
或者你可以在上面查看我的 blog post