简单视图会产生内部服务器错误500

时间:2018-04-29 13:19:36

标签: c# asp.net .net asp.net-mvc

控制器操作查找职位发布。如果找不到工作,只需返回简单的View("NotFound")

[Route("jobs/{id}")]
public ActionResult Detail(int id) {
    Job job = JobRepository.GetByIdDetail(id);
    if (job == null)
        return View("NotFound");
}

NotFound.cshtml:

@{
  ViewBag.Title = "Job not found";
  ViewBag.Subtitle = "I’m sorry, it looks like this job has been closed.";
}
<main>
  <div class="container">
    @ViewBag.Subtitle
  </div>
</main>

而不是View,我得到了:

  

内部服务器错误500

堆栈跟踪:

  

参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于'CeeVee.Controllers.JobsController

为什么它不会只显示NotFound视图?为什么它仍在搜索id参数,在这种情况下它不再相关?

更新 不明白为什么它不会返回简单的愚蠢视图。 即使我添加动作方法,也会发生同样的错误。

[Route("jobs/notfound")]
        public ActionResult NotFound ()
        {
                return  View("NotFound");
        }

/ jobs / notfound 给出错误500?!?!?!?!??!? '{“对象引用未设置为对象的实例。”}'Whaaat对象???

更新2 :Global.asax.cs enter image description here

我想关闭这个问题:(问题出在我的LAYOUT.CSHTML。对不起伙计......

1 个答案:

答案 0 :(得分:1)

将您的控制器代码更改为:

[Route("jobs/{id}")]
public ActionResult Detail(int? id) {
    if(!id.HasValue) //you can also add '|| id.Value > 0' if your ids cannot be zero
        return View("NotFound");
    Job job = JobRepository.GetByIdDetail(id.Value);
    if (job == null)
        return View("NotFound");
}