You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core MVC点击按钮跳转指定控制器Action方法的实现问题

最优实现方案(无JS、无样式冲突)

Asp.Net Core MVC 中最简单的实现方式是直接使用 Razor Tag Helper 修饰超链接标签,将其伪装为按钮,完全不需要依赖 JavaScript 也不需要嵌套 form 标签,不会破坏原有样式:

  1. 首先确认项目的 Views/_ViewImports.cshtml 文件中已引入 Tag Helper 注册代码(默认创建的项目都会自带):
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
  1. 直接用 <a> 标签替换原有 button,复用你现有的按钮样式类即可:
<a asp-action="Index" asp-controller="Home" class="dropbtn glyphicon glyphicon-user">Log in</a>

这个方案本质是用超链接实现原生跳转,<a> 标签应用按钮样式后视觉上和原生按钮完全一致,没有任何副作用。


如果你必须使用原生 <button> 标签

如果业务要求必须用 <button> 元素而非超链接,可以通过调整 form 标签的样式解决布局错乱问题:form 默认为块级元素,会独占一行导致样式偏移,只要将其设置为行内元素即可:

@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { style = "display:inline;" }))
{
    <button type="submit" class="dropbtn glyphicon glyphicon-user">Log in</button>
}

注意这里改用 FormMethod.Get 更符合普通跳转的 HTTP 语义,不会触发不必要的表单提交逻辑。


之前方案报错/失效的原因说明

  • @Html.ActionLink 会生成完整的 <a> 标签代码,直接放入 onclick 属性中相当于把 HTML 代码嵌入 JS 执行上下文,自然只会显示原始文本
  • 你参考的旧方案中 <%: %> 是 ASP.NET 旧版 Web Forms 视图引擎的语法,Asp.Net Core 已全面改用 Razor 语法,所以会报语法错误
  • 嵌套 form 导致样式错乱是因为 form 默认块级元素的布局特性,修改 display 属性即可解决

内容的提问来源于stack exchange,提问作者Grazosi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:36:02