You need to enable JavaScript to run this app. ASP.NET项目点击商品详情Action链接时id为0报错,修改为有效值可正常运行
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET项目点击商品详情Action链接时id为0报错,修改为有效值可正常运行

问题原因
  • 点击详情链接时传入的id为0,数据库中不存在id=0的商品数据,GetPhone方法返回null值,视图渲染null对象时触发空引用异常。
  • 索引页生成的详情链接参数错误,没有正确绑定每个商品对应的id值,导致所有详情链接默认传入int类型的默认值0。
修复方案

1. 控制器逻辑补充校验

给Details方法增加参数合法性校验和空结果处理,避免无效查询和空引用报错:

public ActionResult Details(int id) 
{
    // 过滤非法id参数
    if(id <= 0)
    {
        return RedirectToAction("Index");
    }
    var result = repository.GetPhone(id);
    // 处理查无数据的场景
    if(result == null)
    {
        return HttpNotFound("指定商品不存在");
    }
    return View(result);
}

2. 修正索引页的链接生成逻辑

检查索引页中生成详情链接的代码,确保路由参数id绑定当前遍历的商品Id字段,参考正确写法:

@foreach (var phone in Model.PhoneList)
{
    <!-- 确保此处的id赋值为当前商品的Id属性 -->
    @Html.ActionLink("查看详情", "Details", new { id = phone.Id })
}

3. 数据查询层可选优化

给GetPhone方法增加前置参数校验,减少无效的数据库请求:

public PhoneModel GetPhone(int id)
{
    if (id <= 0)
    {
        return null;
    }
    using(var context = new ElectronicsDataBaseEntities())
    {
         return context.Phone
              .Where(x => x.Id == id)
              .Select(x => new PhoneModel()
              {
                  Name = x.Name,
                  Phonemodel = x.Model,
                  DateReleased = x.DateReleased,
                  Desicription = x.Desicription
               })
               .FirstOrDefault();
      }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:45:03