1

我见过很多有这样问题的主题,但找不到我的。在此错误之后,它指定了一个来源:

    @{
Line 4:      ViewBag.Title = "Edit product: " + @Model.Name;
Line 5:      Layout = "~/Views/Shared/_MasterLayout.cshtml";
Line 6:  
}

它发生在我从视图中单击我的产品名称后

@Html.ActionLink(item.Name, "Edit", new { item.ProductID })

链接变成

http://localhost:31363/Master/Edit?ProductID=1

但是,如果我手动将链接编辑为

http://localhost:31363/Master/Edit/1

有用。那么,我应该如何解决才能使其以第一种方式或在第二种方式中自动工作?我现在没有任何特殊路由,它是 Mvc4 应用程序附带的默认路由。

4

1 回答 1

0

这应该可以解决问题:

@Html.ActionLink(item.Name, "Edit", new { id = item.ProductID })

解释

在您的代码中,您正在创建一个带有 ProductID 参数的链接,因为

@Html.ActionLink(item.Name, "Edit", new { item.ProductID })

等于:

@Html.ActionLink(item.Name, "Edit", new { ProductID = item.ProductID })

由于默认路由中没有名为 ProductID 的参数,因此将其添加到查询字符串中。此外,您的 Edit 操作可能有一个名为 id 的整数参数,如下所示:

public ActionResult Edit(int id)

由于此参数不是可选的或可为空的,因此无法将请求映射到此操作并且您会收到错误消息。所以参数名称很重要,因为 ASP.NET MVC 不能自己弄清楚。

于 2012-11-10T12:00:56.133 回答