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

使用Url.Action时的路由问题:无法生成预期路由

排查ASP.NET MVC路由生成异常问题

首先一眼就能看到一个明显的拼写错误——这大概率是导致你路由生成失败的核心原因:

你的控制器类是PublishedReportWidgetController,但你在Url.Action里写的控制器名称是"PublishedReportsWidget"(多了一个s,把Report写成了Reports)。ASP.NET MVC在解析控制器名称时,会自动去掉后缀的Controller,但拼写错误会让路由系统找不到对应的控制器,自然生成不了正确的URL。

接下来针对你的两个Action重载,给你修正后的调用方式:

1. 无参数的PublishedReports方法

正确的Url.Action调用应该是:

console.log("@(Url.Action(\"PublishedReports\", \"PublishedReportWidget\"))");

这会生成预期的URL:/widgets/published-reports

2. 带publishedReportId参数的重载

如果要生成带参数的路由,需要传入对应的参数值,比如:

console.log("@(Url.Action(\"PublishedReports\", \"PublishedReportWidget\", new { publishedReportId = 123 }))");

这样会生成:/widgets/published-reports/123

额外的验证步骤

如果修正拼写后还是有问题,可以检查这一点:

  • 确保你的路由配置中已经启用了属性路由,也就是在RouteConfig.cs里添加了routes.MapMvcAttributeRoutes();——因为你用了[RoutePrefix]和[Route]属性,必须启用这个配置才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:03