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

如何根据下拉列表选择展示数据库数据到Panel/Label?解决空值报错

问题分析与解决

报错核心原因

  1. 参数硬编码错误:你把查询参数固定写为"Category",这不是下拉选择的实际值(比如Fruits/Tools),导致数据库找不到匹配记录,Sum(Amount)返回NULL,直接调用dr.GetDecimal(0)就会触发空值报错。
  2. 未接收前端选择值:控制器方法没有获取下拉框选中的Category参数,无法根据用户选择动态查询。
  3. 未处理空值结果:当无匹配数据时,Sum函数会返回NULL,直接调用GetDecimal会因空值抛出异常。

修正后的控制器代码

[Route("TotalValue")]
[HttpGet]
// 新增参数接收前端传递的Category选择值
public decimal TotalValue([FromQuery] string category)
{
    // Order是SQL关键字,需用方括号转义避免语法错误
    var query = "Select Sum( Amount ) as Total from [Order] Where Category = @Category";
    string sqlDataSource = _configuration.GetConnectionString("DefaultConnection");
    decimal TotalAmount = 0;     
    
    using (SqlConnection con = new SqlConnection(sqlDataSource))
    {
        con.Open();
        using (SqlCommand cmd = new SqlCommand(query, con))
        {   
            // 使用前端传递的category参数,替换硬编码的固定值
            cmd.Parameters.AddWithValue("@Category", category);                
            using (SqlDataReader dr = cmd.ExecuteReader())
            {                        
                if (dr.Read())
                {
                    // 先判断字段是否为DBNull,为空则赋值0,避免报错
                    TotalAmount = dr.IsDBNull(0) ? 0 : dr.GetDecimal(0); 
                }
            }
        }
        // using块会自动释放连接资源,无需手动调用con.Close()
    }
    return TotalAmount;
}

前端配合说明

下拉框选择完成后,需要将选中的Category值(比如Fruits)作为查询参数传递到接口,示例请求地址:/TotalValue?category=Fruits

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:42:39