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

如何将ASP.NET MVC中About控制器的Index方法URL改为/about-us?

修改ASP.NET MVC控制器路由为about-us的解决方案

嘿,这个需求很常见,我给你两种简单靠谱的实现方式,按需选就行:

方法一:用路由属性(Attribute Routing)(推荐)

这种方式最直观,直接在控制器或者Action上标记路由规则就行,适合MVC 5及以上版本:

  1. 先确保路由属性已启用:打开App_Start/RouteConfig.cs,确认里面有这行代码(如果没有就加上):
routes.MapMvcAttributeRoutes();
  1. 然后修改你的About控制器:
    如果只想给Index方法设置about-us路由,直接在方法上加特性:
public class AboutController : Controller
{
    // 指定访问URL为about-us
    [Route("about-us")]
    public ActionResult Index()
    {
        return View();
    }
}

要是你的About控制器还有其他Action,想给整个控制器加统一前缀,比如about-us作为根,其他Action在后面拼接,可以这么写:

// 给控制器设置路由前缀
[RoutePrefix("about-us")]
public class AboutController : Controller
{
    // 空路由对应about-us(也就是Index方法)
    [Route("")]
    public ActionResult Index()
    {
        return View();
    }

    // 这个Action的访问URL就是about-us/contact
    [Route("contact")]
    public ActionResult Contact()
    {
        return View();
    }
}

方法二:修改全局路由配置

如果不想用属性路由,直接修改全局路由表也可以:

打开App_Start/RouteConfig.cs,在默认路由前面添加一条自定义路由(路由匹配是按顺序来的,所以要放前面):

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        // 新增自定义路由,匹配about-us到About/Index
        routes.MapRoute(
            name: "AboutUs",
            url: "about-us",
            defaults: new { controller = "About", action = "Index" }
        );

        // 原来的默认路由保留
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

注意事项

  • 改完之后记得重启你的应用,不然路由不会生效
  • 默认情况下,原来的/about还是能访问的,如果想禁用原来的URL,可以根据你的需求调整路由规则(比如移除默认路由里的控制器匹配,或者用属性路由覆盖)

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

相关产品推荐
方舟 Agent Plan

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

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