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

ASP.NET MVC中Search()方法返回Index视图触发空引用异常

问题根源

你的Index视图是强类型视图,绑定了HomeViewModel类型的模型,页面渲染下拉框时需要读取Model.Airports属性的值。但你在Search方法执行完返回View("Index")的时候,没有给视图传入对应的HomeViewModel实例,导致视图拿到的Model为null,遍历Model.Airports时就触发了空引用异常。


修复方案

1. 修正Search方法代码

返回Index视图时,和Index方法一样构造传入HomeViewModel实例,可选择继续用ViewBag存航班结果,也可以把搜索结果直接放进ViewModel更规范:

public IActionResult Search(SearchQuery FormData)
{
    List<Flight> flights = (from flight in _context.Flights
               where flight.FlightDateTime.Date == FormData.PreferredFlightTime.Date
               && flight.ArrivalAirportId == FormData.ArrivalAirportId
               && flight.DepartureAirportId == FormData.DepartureAirportId
               select flight).ToList();
    
    // 构造视图必须的模型实例
    HomeViewModel mymodel = new HomeViewModel();
    mymodel.Airports = GetAirports();
    // 保留原逻辑用ViewBag存搜索结果
    ViewBag.FlightSearchResults = flights;
    
    // 传入模型返回视图
    return View("Index", mymodel);
}

2. 修复视图代码的语法错误

你当前视图里出发机场下拉框的name属性书写错误,多了多余的大括号,会导致表单提交时出发机场ID无法正常传到后台:
把原代码里的
<select name=" {DepartureAirportId" class="form-control">
修改为
<select name="DepartureAirportId" class="form-control">


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:04