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

如何在Startup.cs中配置路由移除控制器名称的Step前缀?

解决方案:通过Startup.cs集中配置移除路由中的"Step"前缀

当然可以!不需要给每个控制器添加[Route]特性,你可以通过自定义控制器路由约定(Controller Model Convention)来实现这个需求,在Startup.cs中集中配置规则,自动移除控制器名称里的"Step"前缀。

步骤1:创建自定义路由约定类

首先,创建一个实现IControllerModelConvention的类,用来修改控制器的路由模板:

using Microsoft.AspNetCore.Mvc.ApplicationModels;
using System;

public class RemoveStepPrefixConvention : IControllerModelConvention
{
    public void Apply(ControllerModel controller)
    {
        // 检查控制器名称是否以"Step"开头(不区分大小写)
        if (controller.ControllerName.StartsWith("Step", StringComparison.OrdinalIgnoreCase))
        {
            // 移除"Step"前缀("Step"共4个字符)
            var modifiedControllerName = controller.ControllerName.Substring(4);
            
            // 清除默认路由选择器,替换为自定义路由模板
            controller.Selectors.Clear();
            controller.Selectors.Add(new SelectorModel
            {
                AttributeRouteModel = new AttributeRouteModel
                {
                    // 自定义路由模板:修改后的控制器名称 + 动作(默认Index)
                    Template = $"{modifiedControllerName}/{{action=Index}}"
                }
            });
        }
    }
}

步骤2:在Startup.cs中注册该约定

在ConfigureServices方法里,将自定义约定添加到MVC选项中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(options =>
    {
        // 注册自定义路由约定
        options.Conventions.Add(new RemoveStepPrefixConvention());
    });
}

效果验证

这样配置后,你的控制器路由会自动转换:

  • Step1_PersonalDataController → URL路径为/1_PersonalData(默认动作Index),其他动作如/1_PersonalData/Validate也会正常工作
  • Step2_OptionsController → URL路径为/2_Options
  • 以此类推,所有以"Step"开头的控制器都会自动移除前缀,非"Step"开头的控制器不受影响

注意事项

  • 如果某些控制器需要特殊路由规则,你仍然可以给单个控制器或动作添加[Route]特性,特性路由的优先级会高于这个全局约定
  • 该方案适用于ASP.NET Core 2.x及以上版本(包括.NET 6+,如果是.NET 6+的极简API,只需将注册代码移到Program.cs的builder.Services.AddControllers()配置中即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:14:00