Asp.net mvc 对象引用未设置为对象的实例。~在@Html.ActionLink期间

Asp.net mvc 对象引用未设置为对象的实例。~在@Html.ActionLink期间,asp.net-mvc,actionlink,Asp.net Mvc,Actionlink,我在评论控制器中有一个创建操作和一个编辑操作 我的创建操作链接是: @Html.ActionLink("Create New", "Create", new { Id = Model.Id }) @Html.ActionLink("Edit", "Edit", new { id=item.Id } 我的创建操作是: [HttpGet] public ActionResult Create(int Id) { return View(); }

我在评论控制器中有一个创建操作和一个编辑操作

我的创建操作链接是:

@Html.ActionLink("Create New", "Create", new { Id = Model.Id })
  @Html.ActionLink("Edit", "Edit", new { id=item.Id }
我的创建操作是:

    [HttpGet]
    public ActionResult Create(int Id)
    {
        return View();
    }
我的编辑操作链接是:

@Html.ActionLink("Create New", "Create", new { Id = Model.Id })
  @Html.ActionLink("Edit", "Edit", new { id=item.Id }
我的编辑是:

    [HttpGet]
    public ActionResult Edit(int id)
    {
        var model = _db.Reviews.Find(id);
        return View(model);
    }
在我的编辑视图中,我有一个名为“返回列表”的操作链接,它是:

  @Html.ActionLink("Back to List", "Index", new {id = Model.RestaurantId}, null)
它起作用了,带我回到我的家乡

在我的create视图中,当我放置相同的东西时,我会得到标题中的错误消息。该Id没有值或为空。。因此Model.RestaurantId没有值

如果我硬编码一个值,它的工作方式如下:

  @Html.ActionLink("Back to List", "Index", "Reviews", new { id = 1 }, null)
我可能做错了什么

我基本上是在学习Scott Allens的MVC4教程。 我无法理解为什么会发生这种情况。我有一个管理员。有人能给我一些建议吗


谢谢。

为您的“创建”视图提供一个viewmodel,其中包含一个用于存储源/父id的属性,并根据需要使用该属性

public classs CreateReviewVM
{
   public int SourceID { set;get;}
}
在你的行动中

[HttpGet]
public ActionResult Create(int Id)
{ 
   var vm=new CreateReviewVM { SourceID=id };
   return View(vm);
}
以及您的创建视图(
create.cshtml
),它是强类型的
CreateReviewVM

@model CreateReviewVM
@Html.ActionLink("Back to List", "Index", "Reviews", 
                                              new { id = Model.SourceID }, null)
事实证明,我可以使用:

    @Html.ActionLink("Back to List", "Index", new { id=Request.Params["restaurantId"] }, null)

它将填充值

好的…一个视图模型。我会检查一下,按照你的建议做,然后再给你回复……但与此同时,你能告诉我为什么我在编辑视图中的“返回列表”有效,但在创建视图中却无效?谢谢。。。