我的路线有什么问题吗?
当我从列表视图中单击“编辑”链接时,出现以下错误
参数字典包含方法“System.Web.Mvc.ActionResult”的不可空类型“System.Int32”的参数“envId”的空条目在“WebUI.Controllers.EnvironmentsController”中编辑(Int32)。可选参数必须是引用类型、可为 null 的类型,或者声明为可选参数。 参数名称:parameters
这是我的代码:
Summary.ascx
路线
环境控制器,编辑操作方法
环境控制器,列表操作方法
EnvRepository 和 SqlEnvRepository
I get the following error when I click the Edit link from the List view
The parameters dictionary contains a null entry for parameter 'envId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Edit(Int32)' in 'WebUI.Controllers.EnvironmentsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
Here is my code:
Summary.ascx
Routes
Env Controller, Edit Action methods
Env Controller, List Action method
EnvRepository and SqlEnvRepository
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的自动生成的链接是这样说的:
但控制器代码是这样说的:
MVC 的模型绑定通过名称挂钩操作中的参数,默认路由假定第一个参数将是一个名为
int
>id。将Edit()
参数的名称更改为id
它应该可以工作。或者,您可以将 ActionLink 参数对象更改为
new { envId = Model.EnvironmentID }
但这会导致您的 URL 看起来像这样:而不是这样:
Your auto-generated links say this:
but the controller code says this:
MVC's model binding hooks the parameters in the action up by name, and the default route assumes the first parameter will be an
int
calledid
. Change the name of yourEdit()
parameter toid
and it should work.Alternatively, you could change the ActionLink parameters object to
new { envId = Model.EnvironmentID }
but that will cause your URLs to look like this:instead of this: