我在MVC 4应用程序中创建了一个Admin区域。在名为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错误( Controller无法找到UserID )。但是,如果我按照以下方式手动将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>
答案 0 :(得分:5)
您使用了错误的重载。
@Html.ActionLink(string linkText, string actionName, string controllerName, object htmlAttributes)
而不是
@Html.ActionLink(string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
如果您不需要使用它们,则可以为htmlAttributes传递null:
Html.ActionLink("Edit", "Edit", "UserManage", new { id = "1" }, null)
我不知道你为什么要使用编辑,编辑,编辑。我认为这是一个错字,所以我改变它以使用UserManage作为控制器名称。