【问题标题】:Where is my null entry for parameter error coming from?我的参数错误的空条目来自哪里?
【发布时间】:2016-06-03 17:37:19
【问题描述】:

参数字典包含参数的空条目 方法的不可为空类型“System.Int32”的“restaurantId” 'System.Web.Mvc.ActionResult 索引(Int32)' 在 'OdeToFood.Controllers.ResturantReviewsController'。一个可选的 参数必须是引用类型、可为空的类型或声明为 一个可选参数。

只有当我点击返回列表按钮时才会出现该错误

我遇到了与patron posting here 相同的错误。我已经尝试了该帖子的所有建议,但我可以添加一些未在该问题中列出的其他参考点。我注意到,当我将鼠标悬停在“返回列表”链接上时,屏幕底部的 url 不包含restaurantId,这让我质疑它为什么/如何在 Pluralsight 教程中工作。

我什至用提供的练习文件中的文件替换了我的所有文件,但我得到了同样的错误。

这是我认为导致错误的代码:

[HttpPost]
    public ActionResult Edit(RestaurantReview review)
    {
        if (ModelState.IsValid)
        {
            _db.Entry(review).State = EntityState.Modified;
            _db.SaveChanges();
            return RedirectToAction("Index", new { id = review.RestaurantId   });
        }
        return View(review);
    }

【问题讨论】:

  • 1) 在此处将您的错误添加到您的问题中。 2) 包括导致错误的步骤。 3) 包括你的代码和支持它的控制器代码。
  • @Jasen 我已经按照你的要求完成了
  • 您需要显示相关代码-“返回”链接的查看代码和Index() 方法的签名(您似乎也对return RedirectToAction("Index", new { id = review.RestaurantId }); 代码行有问题也)

标签: asp.net-mvc-4 url-parameters


【解决方案1】:

对于您发布的代码(它有帮助但没有多大帮助,应该发布视图的代码和创建/编辑/审核操作代码),我的假设如下:

发生的情况是,您有一个操作期望接收一个 restaurantId(int 类型,这意味着不可为空),但它没有接收到 restaurantId 的任何值,从而导致该异常。可能,对于您所说的和查看代码的内容,Reviews 操作需要一个未提供的 restaurantId。如果评论操作有一个 restaurantId 作为参数,您应该使用该 ID 创建“反向链接”。

希望我有所帮助。

问候,

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多