【问题标题】:Html.ActionLink sending Id parameter to another controllerHtml.ActionLink 将 Id 参数发送到另一个控制器
【发布时间】:2016-12-05 09:26:24
【问题描述】:

我有两个控制器:Transaction 和 CheckingAccount

支票账户索引视图中,我得到了以下信息:

<td>
        @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
        @Html.ActionLink("Details", "Details", new { id=item.Id }) |
        @Html.ActionLink("Deposit", "Deposit", "Transaction",new {id = item.Id) |
        @Html.ActionLink("Withdraw", "Withdraw", "Transaction", new { id = item.Id }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.Id })
    </td>

编辑、详细信息和删除链接按预期工作,这意味着它们将Id 链接发送到CheckingAccount 控制器。

对于存款和取款链接,我想将它们定向到具有相同 ID 的 Transaction 控制器。但是,它再次指向 CheckingAccount 控制器。

我该如何解决这个问题?

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    你应该把它改成:

    <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Deposit", "Deposit", "Transaction",new {id = item.Id }, null) |
            @Html.ActionLink("Withdraw", "Withdraw", "Transaction", new { id = item.Id }, null) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    

    注意最后一个null 参数。 ActionLink helper 有很多重载的小问题,所以如果没有 null,你基本上使用了错误的重载,这就是为什么你没有得到你需要的链接。

    这是full answer

    这是你正在使用的:

    @Html.ActionLink(
        "Reply",                                                  // linkText
        "BlogReplyCommentAdd",                                    // actionName
        "Blog",                                                   // routeValues
        new {                                                     // htmlAttributes
            blogPostId = blogPostId, 
            replyblogPostmodel = Model, 
            captchaValid = Model.AddNewComment.DisplayCaptcha 
        }
    )
    

    这是你应该使用的:

    @Html.ActionLink(
        "Reply",                                                  // linkText
        "BlogReplyCommentAdd",                                    // actionName
        "Blog",                                                   // controllerName
        new {                                                     // routeValues
            blogPostId = blogPostId, 
            replyblogPostmodel = Model, 
            captchaValid = Model.AddNewComment.DisplayCaptcha 
        },
        null                                                      // htmlAttributes
    )
    

    【讨论】:

    • 谢谢。它有效,但为什么我们必须在最后添加 null?
    • 错误的重载使用了 wilthot null
    • 对不起。我无法理解。能否请您详细说明一下?
    • @Landowner 我添加详细信息
    【解决方案2】:

    您可以使用以下代码将 Id 参数发送到另一个控制器:

    @Html.ActionLink("Delete Data", "ActionName", "ControllerName", new { id = item.Id, },null)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多