MVC5 中 ActionLink 的 HTML 按钮

Posted

技术标签:

【中文标题】MVC5 中 ActionLink 的 HTML 按钮【英文标题】:HTML button from ActionLink in MVC5 【发布时间】:2021-12-26 16:26:15 【问题描述】:

我有这样的 ActionLink:

    <td class="options">
        @html.ActionLink("Settings", "RedirectToSettings", new  locationId = item.LocationId )
    </td>

但我想把它变成一个按钮,而不仅仅是可点击的文本。无论是使整个单元格可点击还是添加按钮元素。

我查看了关于 SO 的其他问题,例如 HTML button calling an MVC Controller and Action method,但我无法弄清楚如何让它发挥作用。

我试过直接把它做成一个按钮,并使用input

    <td class="options">
        <input type="button" value="Settings" onclick="@Html.ActionLink("Settings", "RedirectToSettings", new locationId = item.LocationId)"/>
    </td>

我能够获取该按钮,但单击它不会将我重定向到我在控制器的“RedirectToSettings”中指定的页面。

public ActionResult RedirectToSettings(int locationId)

    *doing stuff with the locationId*
    return RedirectToAction("StationSettings");

按钮:

我怎样才能做到这一点?非常感谢任何帮助!

更新:

使用Html.BeginForm 解决了这个问题,支持 Serge 的想法。

    <td class="options">
        @using (Html.BeginForm("RedirectToSettings", "Configs", new  locationId = item.LocationId ))
        
            <input type="submit" value="Settings"/>
        
    </td>

【问题讨论】:

【参考方案1】:

试试这个

  <td class="options">
 @using(Html.BeginForm("RedirectToSettings","Settings"))
         
           <input type="hidden"  value="@item.LocationId" />
           <input type="submit" value="Settings" />
         
  <td class="options">

【讨论】:

谢谢 Serge,该链接现在将我带到一个错误页面,指出 locationId 为空,这很可能是由于您的解决方案中未设置该值。我尝试将其更改为 value="@ new locationId = item.LocationId ,但这也没有用。 我想通了!如果我将路由值移动到 BeginForm 声明中,它就可以工作。再次感谢 Serge 为我指明了正确的方向。

以上是关于MVC5 中 ActionLink 的 HTML 按钮的主要内容,如果未能解决你的问题,请参考以下文章

MVC 5 排序和过滤数据

如何在 @Html.ActionLink 中添加图像

如何在 C# 代码中使用 MVC 3 @Html.ActionLink

总结详细说说@Html.ActionLink()的用法

在 Mvc 中使用 Html.ActionLink 时如何绕过 HTML 编码?

从数据库中获取后如何在 CSHTML 中编写@html.actionlink