向ViewBag新增属性本地正常,测试环境报空引用绑定错误
解决ViewBag.FRCP在测试环境为null的问题
排查测试环境数据库与代码执行情况
你的LINQ查询List<Documents> FRCPLst = (from x in db.Documents where x.DocumentTypeId == 29 orderby x.DocumentTitle select x).ToList();即使没有匹配数据,也会返回空List<>而非null,所以ViewBag.FRCP为null大概率是这段代码没执行到:- 检查测试环境数据库连接是否正常,应用程序是否有访问数据库的权限,是否存在未捕获的异常中断了代码执行
- 确认测试环境的Documents表中是否存在DocumentTypeId=29的记录(虽然空列表不会导致null,但可排除数据层面的基础问题)
- 可以在赋值代码前后添加日志输出,或在测试环境启用调试,验证这段代码是否正常执行并完成ViewBag.FRCP的赋值
检查BaseController的生命周期逻辑
由于HomeController继承自BaseController,需确认BaseController中的OnActionExecuting、OnActionExecuted等过滤器方法是否存在以下情况:- 是否有重置或覆盖ViewBag的操作,导致HomeController赋值的ViewBag.FRCP被清空
- 是否有提前返回ActionResult的逻辑,导致HomeController的Index方法后续代码(包括ViewBag赋值)未执行
验证视图与Action的对应关系
确认抛出错误的视图是否确实对应Home/Index的Action,是否因测试环境路由配置与本地不同,请求被导向了其他未赋值ViewBag.FRCP的Action确认部署代码的完整性
检查测试环境部署的代码是否为最新版本,是否遗漏了HomeController的修改——如果本地修改的代码未部署到测试环境,测试环境运行的还是旧代码,自然不会给ViewBag.FRCP赋值
内容的提问来源于stack exchange,提问作者jpb103
相关产品推荐
相关产品推荐

