You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ASP.NET中Page_Load代码抛出的“对象引用未设置为对象的实例”错误?

解决ASP.NET中“对象引用未设置为对象的实例”错误

嘿,这个空引用错误简直是ASP.NET开发里的“常客”——咱们来快速定位问题,把它搞定!

问题根源

你代码里的这行就是问题所在:

num = Convert.ToInt32(Request.QueryString["RegNo"].ToString());

当URL里没有RegNo这个查询参数时,Request.QueryString["RegNo"]会返回null,你直接对null调用.ToString(),自然就会抛出“对象引用未设置为对象的实例”的异常。而且就算参数存在,如果它不是有效的数字,Convert.ToInt32还会抛出格式错误,咱们得一起把这两个隐患都解决掉。

解决方案

下面给你两种安全的写法,按需选择:

方案1:先检查参数是否存在,再转换

先获取参数值,判断非空后再转换,同时明确处理参数缺失的情况:

protected void Page_Load(object sender, EventArgs e)
{
    // 先获取查询参数值
    string regNoValue = Request.QueryString["RegNo"];
    
    // 检查参数是否存在且不为空
    if (!string.IsNullOrEmpty(regNoValue))
    {
        num = Convert.ToInt32(regNoValue);
    }
    else
    {
        // 这里写参数缺失时的处理逻辑,比如给默认值或提示用户
        num = 0; // 根据你的业务需求设置默认值
        // 也可以添加友好提示:Response.Write("请提供必要的RegNo参数");
    }

    if (!IsPostBack)
    {
        BindTextBoxvalues();
    }
}

方案2:用int.TryParse同时处理空值和格式错误

这种方法更健壮,能同时处理参数不存在和参数不是有效数字的情况:

protected void Page_Load(object sender, EventArgs e)
{
    string regNoValue = Request.QueryString["RegNo"];
    
    // 尝试转换,成功就赋值,失败则进入else分支
    if (int.TryParse(regNoValue, out int regNo))
    {
        num = regNo;
    }
    else
    {
        // 参数不存在或不是有效数字时的处理
        num = 0;
        // 可以在这里给用户友好提示,比如跳转到错误页
    }

    if (!IsPostBack)
    {
        BindTextBoxvalues();
    }
}

额外提醒

如果RegNo是页面必须的参数,你可以在参数缺失时直接跳转或者终止页面加载,避免后续代码因为num的值异常而出问题。

内容的提问来源于stack exchange,提问作者divikdiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:14:03