我在评价控制器中有一个创建动作和一个编辑动作。
我的创建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教程。 我无法理解为什么会这样。我有一个评论控制器。有人可以给我一些建议吗?
感谢。
答案 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)
它将填充该值。