我在ASP.NET中编写一个网页,其中显示了未列为参与者的学生列表,点击学生姓名后会向您显示其详细信息的简要摘要,以便用户确保他们选择合适的人。
我的代码当前正确获取了他们的ID,将其作为参数添加到我的存储过程并执行该过程;
protected void LinkButton_OnClick(object sender, EventArgs e)
{
LinkButton l = (LinkButton)sender;
HiddenField hfv = (HiddenField)l.Parent.FindControl("hfAdmissionNumber");
SqlDataSource2.SelectParameters.Clear();
SqlDataSource2.DataSourceMode = SqlDataSourceMode.DataReader;
SqlDataSource2.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
Parameter hfcParam = new Parameter();
hfcParam.Type = TypeCode.Int32;
hfcParam.DefaultValue = hfv.Value;
hfcParam.Name = "@AdmissionNumber";
hfcParam.Direction = System.Data.ParameterDirection.Input;
SqlDataSource2.SelectParameters.Insert(0, hfcParam);
System.Data.DataView dv = (System.Data.DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
}
但是,当我尝试访问结果时,出现以下错误:
System.NullReferenceException: Object reference not set to an instance of an object.
在调试时,似乎没有返回任何结果......但是当在SQL Server中运行具有相同数据的存储过程时,它会按预期返回单行。
如何访问此结果,以便将其绑定到我的字段?
(我在使用SQL Server 2008的Visual Studio 2008中使用ASP.NET 3.5。)
答案 0 :(得分:1)
ASP.NET论坛上提供的答案:
答案 1 :(得分:0)
该异常应该告诉您有关错误的更多信息,特别是发生错误的行。你应该特别注意这一行,试着确定究竟是什么,并找出如何防止它。
例如,在上面的代码中,我可以看到您有以下内容:(为清晰起见,删除了中间代码)
HiddenField hfv = (HiddenField)l.Parent.FindControl("hfAdmissionNumber");
hfcParam.DefaultValue = hfv.Value;
在这种情况下,我可以看到FindControl
方法可能可能返回null,在这种情况下,在尝试hfv.Value
hfv
时会遇到NullReferenceException 1}}为空。
如果你能弄清楚究竟是什么,那么这应该能让你更好地指出问题是什么。