你调用的对象是空的。 〜@ Html.ActionLink期间

时间:2014-03-24 21:25:17

标签: asp.net-mvc actionlink

我在评价控制器中有一个创建动作和一个编辑动作。

我的创建ActionLink是:

@Html.ActionLink("Create New", "Create", new { Id = Model.Id })

我的创建动作是:

    [HttpGet]
    public ActionResult Create(int Id)
    {
        return View();
    }

我的编辑ActionLink是:

  @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)

它起作用并带我回到我来自的地方......

在我的创建视图中,当我添加相同的内容时,我收到标题中的错误消息。 Id没有值或为null ..所以Model.RestaurantId没有值..

如果我对一个值进行硬编码,它的工作原理如下:

  @Html.ActionLink("Back to List", "Index", "Reviews", new { id = 1 }, null)

我可能做错了什么......

我基本上是在尝试遵循Scott Allens的MVC4教程。 我无法理解为什么会这样。我有一个评论控制器。有人可以给我一些建议吗?

感谢。

2 个答案:

答案 0 :(得分:0)

为您的创建视图创建一个viewmodel,其中包含一个存储源/父ID的属性,并根据需要使用该模型。

public classs CreateReviewVM
{
   public int SourceID { set;get;}
}

并在你的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)

答案 1 :(得分:0)

原来,我可以使用:

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

它将填充该值。