首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC: Html.ActionLink()解析为(Edit?Length=)而不是(Edit?Id=)

MVC: Html.ActionLink()解析为(Edit?Length=)而不是(Edit?Id=)
EN

Stack Overflow用户
提问于 2014-04-22 14:32:39
回答 1查看 3.3K关注 0票数 1

我在MVC 4应用程序中创建了一个Admin区域。在名为UserManage的Views文件夹下,我使用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,出现IIS8.0 404错误(Controller找不到UserID)。但是,如果我按如下方式手动将Length更改为Id,那么所有操作都会按预期进行,并在Id视图中结束:http://localhost:62517/Admin/UserManage/Edit?Id=4

这是我的Index.cshtml页面的网格代码。有人知道我需要在我的Html.ActionLink()上修改什么,这样我的路由就会被解析为?Id=而不是?Length=吗?

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 14:38:57

你使用了错误的过载。

代码语言:javascript
复制
@Html.ActionLink(string linkText, string actionName, string controllerName, object htmlAttributes)

而不是

代码语言:javascript
复制
@Html.ActionLink(string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)

如果不需要使用null,则只需对htmlAttributes传递null:

代码语言:javascript
复制
Html.ActionLink("Edit", "Edit", "UserManage", new { id = "1" }, null)

我不知道你为什么要使用编辑,编辑,编辑。我认为这是一个错误,所以我已经将它更改为使用UserManage作为控制器名称。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23222532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档