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

ASP.NET Core MVC如何按路由名称设置表单按钮路由?

解决方案:在表单中使用ASP.NET Core命名路由

你找对思路啦——既然已经定义了命名路由nextOne,就不需要依赖asp-action(它会直接绑定Action方法名,走默认路由逻辑),而是要用**asp-route标签助手**来指定你想使用的路由名称。

具体代码修改

把你的表单代码改成这样即可:

<form asp-route="nextOne">
    <button type="submit">按名称路由</button>
</form>

为什么这样有效?

当你在<form>上添加asp-route="nextOne"时,ASP.NET Core的标签助手会自动匹配你在Startup.cs中定义的同名路由规则:

endpoints.MapControllerRoute(
    name: "nextOne",
    pattern: "home/magic",
    defaults: new { controller = "Home", action = "Magic" }
);

它会根据这个路由的pattern生成对应的URL(也就是/home/magic),并自动设置为表单的action属性值。用户点击按钮提交表单时,请求就会被精准路由到Home控制器的Magic方法,完全符合你的需求。

扩展:如果命名路由带参数怎么办?

假设你的命名路由需要传递参数,比如:

endpoints.MapControllerRoute(
    name: "nextOneWithId",
    pattern: "home/magic/{id}",
    defaults: new { controller = "Home", action = "Magic" }
);

你可以通过asp-route-*格式的属性来传递参数,示例代码如下:

<form asp-route="nextOneWithId" asp-route-id="123">
    <button type="submit">按带参数的命名路由跳转</button>
</form>

这样生成的表单action会是/home/magic/123,完美匹配带参数的路由规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:27:44