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

如何在Asp.Net Core 3.1中移除Home控制器URL中的/Home路径?

解决Asp.Net Core 3.1中Home控制器URL无需加/Home的问题

我来帮你搞定这个问题!你之前用[Route("/")]没达到预期效果,是因为这个特性只把**根路径(/)**映射到Home控制器的默认Action(Index),但其他Action比如About还是得通过/Home/About访问——因为没有对应的路由规则覆盖这个场景。

下面给你两种实用的解决方案,按需选择:

方法一:修改全局路由配置(无需改动控制器代码)

直接在Startup.cs(或Program.cs,依项目结构而定)的端点配置里,先添加一条针对Home控制器的专属路由,优先级要高于默认路由:

app.UseEndpoints(endpoints =>
{
    // 优先匹配Home控制器的请求,无需加/Home前缀
    endpoints.MapControllerRoute(
        name: "home",
        pattern: "{action=Index}/{id?}",
        defaults: new { controller = "Home" }
    );

    // 保留默认路由,供其他控制器使用
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}"
    );

    endpoints.MapRazorPages();
});

这样配置后:

  • 访问/会直接到Home/Index
  • 访问/About会直接到Home/About
  • 其他控制器(比如BlogController)的请求依然用/Blog/List这种格式访问,互不干扰

方法二:给Home控制器添加特性路由(改动控制器代码)

如果你更倾向于用特性路由来精细化控制,可以给Home控制器加上全局路由特性:

[Route("{action=Index}/{id?}")]
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult About()
    {
        return View();
    }

    // 要是某个Action需要自定义路径,还能单独加特性,比如:
    [Route("my-custom-page")]
    public IActionResult CustomPage()
    {
        return View();
    }
}

这个特性的作用是:让Home控制器的所有Action默认使用/ActionName的路径访问,同时设置了默认Action为Index,所以根路径/也会直接指向Index方法。而且特性路由的优先级高于全局常规路由,不会和默认路由冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:07:34