2012-01-31 90 views
0

ASP.NET w/C#ASP.NET nullexception错误

我正在从5个文本框中收集数据。 输入数据后,点击一个提交按钮发送数据在另一个表单上显示,并希望将其保存到数据库中。

一旦点击 '提交'

我得到的NullReferenceException是由用户代码未处理

这在后面这种形式的代码高亮...

if (clsDataLayer.SavePersonnel(Server.MapPath("PayrollSystem_DB.mdb"), 
    Session["FirstName"].ToString, 
    Session["LastName"].ToString, 
    Session["PayRate"].ToString, 
    Session["StartDate"].ToString, 
    Session["EndDate"].ToString())) 

什么想法?我不是很有经验。提前致谢!!

+0

您的一个会话变量可能为空。那些如何设置?如果它们都很好,那么可能是从SavePersonnel方法冒泡的错误 – Chris 2012-01-31 21:38:57

+0

您正在查找的值是否确实保存在Session对象中?你确定你不打算使用Request.Form而不是Session? – 2012-01-31 21:39:05

+0

约翰桑德斯放在一起[这个通用的问题](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net),以解决问题沿线“为什么我得到一个NullReferenceException?“也许这会帮助你指出正确的方向。不过,我同意Chris和Joachim的看法,你期望在Session中看到的价值可能不是真的。 – 2012-01-31 21:40:18

回答

0

您需要确保在检索它们之前设置了这些Session变量。在该用户的会话,在某些时候,你应该已经建立像

Session["FirstName"] = txtFirstName.Text; 
//etc 

这些会话变量你可以做一个检查你使用它们,确保它们不为空之前,像

if(Session["FirstName"] != null){} 

而且,当您使用.ToString()方法时,请确保将()(如您对最后一个所做的那样)附加到全部。

0

clsDataLayer之一为NULL,或者您在会话中存在的5个值中的一个不存在。您必须测试空值。

顺便提一句,你在ToString之后的4个地方丢失了();我很惊讶,即使编译。

+0

对不起 - 错字 - ()是在每个ToString – 2012-01-31 21:50:03

+0

ok后面,那么@Shredder上面提到的可能是你缺少的:'Session [“FirstName”] = txtFirstName.Text;''if'if'语句之前的某处。 – 2012-01-31 21:53:54

1

Session["Key"]返回一个对象。如果该对象为空,则对其调用ToString()会生成空引用异常。

您需要检查您检查的每个字段是否为空。例如

(Session["FirstName"] != null) 
    ? Session["FirstName"] 
    : String.Empty;