我的路线有什么问题吗?

发布于 2024-11-09 08:50:24 字数 660 浏览 6 评论 0原文

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

参数字典包含方法“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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-11-16 08:50:24

您的自动生成的链接是这样说的:

<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 } 但这会导致您的 URL 看起来像这样:

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

而不是这样:

http://localhost/Env/Edit/1

Your auto-generated links say this:

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

but the controller code says this:

public ActionResult Edit(int envId)

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 called id. Change the name of your Edit() parameter to id 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:

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

instead of this:

http://localhost/Env/Edit/1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文