我在单个表上应用多重搜索选项.. 因为我已经做了一个接受3值的sp 。 我的问题是,如果我在表格上应用多重搜索,它一次只能获取一个搜索值 所以我使用了视图状态
if (ViewState["gen"] != null || ViewState["cen"]!=null)
{
var a = db.sp_StudentSelect1(ViewState["gen"].ToString(), ViewState["cen"].ToString());
GridView1.DataSource = a;
DataBind();
}
但它给了我一个错误
Object reference not set to an instance of an object.
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
请帮忙......
答案 0 :(得分:2)
您希望if语句中的和不是或:
if (ViewState["gen"] != null && ViewState["cen"]!=null)
现在只有其中一个可以是非null并且if语句将通过,但是如果其中一个为null,那么if won中的语句会起作用,因为你不能调用{{ 1}}在空值上。使用&&如上。或者,如果其中一个值为null(通过传递空字符串或其他一些默认值),您可以编辑代码以使其失败。
以下是如何修复"修复"代码:
ToString()
答案 1 :(得分:0)
根据Hogan的回答,如果所有参数都是强制性的,那么请使用&&如果您的存储过程没有返回任何行或null
,请在绑定之前使用此检查这表示var a具有空值。 在分配数据源之前,请执行此检查
if(a!=DBNull.Value)
{
GridView1.DataSource = a;
DataBind();
}
从ViewState传递一个参数时它是否有效?
您还可以在ViewState中存储值吗? (即什么方法page_load?)