我的路线出了什么问题?

时间:2011-05-24 20:32:25

标签: c# asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

单击“列表”视图中的“编辑”链接时出现以下错误

参数字典包含非可空类型'System.Int32'参数'envId'的空条目,用于'WebUI.Controllers.EnvironmentsController中方法'System.Web.Mvc.ActionResult Edit(Int32)' ”。可选参数必须是引用类型,可空类型,或者声明为可选参数。 参数名称:参数

这是我的代码:

Summary.ascx
Routes
Env Controller, Edit Action methods
Env Controller, List Action method
EnvRepository and SqlEnvRepository

1 个答案:

答案 0 :(得分:2)

您自动生成的链接说明了这一点:

<td><%= Html.ActionLink("Edit", "Edit", new { id= Model.EnvironmentID} )%></td>

但控制器代码说明了这一点:

public ActionResult Edit(int envId)

MVC的模型绑定按名称挂钩操作中的参数,默认路由假设第一个参数是int,称为id。将Edit()参数的名称更改为id,它应该有效。

或者,您可以将ActionLink参数对象更改为new { envId = Model.EnvironmentID },但这会导致您的网址如下所示:

http://localhost/Env/Edit?envId = 1

而不是:

http://localhost/Env/Edit/1