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

ASP.NET Core 5 MVC项目如何修改路由去掉URL中的控制器前缀?

可行解决方案

方案1:为目标Action添加特性路由(推荐,影响范围最小)

直接在MoneyController中对应short_form的Action方法上添加[Route]特性,直接指定路由路径:

using Microsoft.AspNetCore.Mvc;

public class MoneyController : Controller
{
    // 直接指定路由为根路径下的short_form
    [Route("short_form")]
    public IActionResult short_form()
    {
        // 原有业务逻辑不变
        return View();
    }
}

注:如果你的控制器类上已经加了[Route]/[ApiController]等前缀特性,需要去掉控制器级别的路由前缀,或者调整Action的Route特性写法避免拼接前缀

方案2:添加全局专属路由规则

不需要修改控制器代码,直接在路由配置中添加一条匹配规则,把short_form路径直接映射到Money控制器的对应Action。
如果是ASP.NET Core 5 带Startup.cs的项目,修改Startup.cs的Configure方法中的路由配置:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件配置不变...

    app.UseEndpoints(endpoints =>
    {
        // 新增这条专属路由,要放在默认路由规则前面,优先级更高
        endpoints.MapControllerRoute(
            name: "ShortFormSpecialRoute",
            pattern: "short_form",
            defaults: new { controller = "Money", action = "short_form" }
        );

        // 原有默认路由保留
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
}

方案3:为整个Money控制器去掉路由前缀(适合该控制器所有Action都需要省略控制器名的场景)

如果Money控制器下的所有Action都需要直接用Action名作为路由路径,可以直接给控制器类添加路由特性:

[Route("[action]")]
public class MoneyController : Controller
{
    // 路由自动变为 /short_form
    public IActionResult short_form()
    {
        return View();
    }

    // 其他Action路由也会自动变为 /Action名,比如/other_action
    public IActionResult other_action()
    {
        return View();
    }
}

注意:该方案需要确保Money控制器下的所有Action名称不会和其他控制器的Action名称、静态资源路径冲突,否则会出现路由匹配异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:15:00