【发布时间】:2014-04-22 22:45:17
【问题描述】:
我在我的 MVC 4 应用程序中创建了一个管理区域。在名为UserManage 的视图文件夹下,我使用Grid.MVC 在多个页面上列出用户(5 组)。在网格中,我列出了供管理员查看的用户详细信息,并添加了:
- 包含复选框 [ ] 的列。
- 包含
EDIT链接的列。 -
CREATE按钮。 -
DELETE按钮(与每行的复选框一起使用)。
我的用户详细信息页面位于我的管理区域下,路径如下:Project\Areas\Admin\Views\UserManage\Index.cshtml。在我的EDIT liniks 上,我试图在Project\Areas\Admin\Views\UserManage\Edit.cshtml 上调出视图并将个人UserID 传递给视图以调出该用户数据。
在下面我当前的代码中,我的浏览器解析为 http://localhost:62517/Admin/UserManage/Edit?Length=4 并出现 IIS 8.0 404 错误(控制器找不到用户 ID)。但是,如果我手动将Length 更改为Id,如下所示,一切都会按预期进行,我最终会看到Edit 视图:http://localhost:62517/Admin/UserManage/Edit?Id=4。
这是Index.cshtml 页面的网格代码。有谁知道我需要在Html.ActionLink() 上修改什么,所以我的路线将解析为?Id= 而不是?Length=?:
<div class="overflowPrevention">
@Html.Grid(Model).Columns(columns =>
{
columns.Add().Encoded(false).Sanitized(false).SetWidth(30).RenderValueAs(o => @Html.CheckBox("checked", false));
columns.Add().Encoded(false).Sanitized(false).RenderValueAs(o => Html.ActionLink("Edit", "Edit", "Edit", new { id = "1" }));
}).AutoGenerateColumns()
</div>
【问题讨论】:
-
当您的控制器被称为
UserManage时,为什么您在Html.ActionLink("Edit", "Edit", "Edit", new { id = "1" })中将“编辑”作为控制器名称? -
实际上,正如我从重载中看到的那样,与您的调用签名匹配的那个会将“编辑”作为
object routeValues,这也是长度为 4 的 IList- 也许你的问题可能与此有关? -
@chiccodoro,这可能是长度 4 的问题。想解决的问题?
-
您可以通过在通话中添加
, null来解决此问题。 -
或刷新此页面并找到 Dismissile 的答案,其中说明大致相同:-)
标签: asp.net-mvc asp.net-mvc-4 razor actionlink