C# asp.net核心中的常规默认路由不起作用
我似乎无法在ASP.NET Core 2.0中使用默认路由,我是否忽略了什么 Startup.csC# asp.net核心中的常规默认路由不起作用,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我似乎无法在ASP.NET Core 2.0中使用默认路由,我是否忽略了什么 Startup.cs public class Startup { public IConfiguration Configuration { get; set; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void Confi
public class Startup
{
public IConfiguration Configuration { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller}/{action}/{id?}", new { controller = "Home", action = "Index" });
});
}
}
...
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
...
HomeController.cs
[Route("[controller]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
...
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
....
当我浏览到URL时,什么都没有发生,它也不会重定向到主页?只需删除控制器上的
[Route(“[controller]”)
装饰
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
使用传统路由模式在UseMvc
方法中注册的默认路由,现在它应该适用于yourBaseUrl
和yourBaseUrl\Home
和yourBaseUrl\Home\Index
通常,使用控制器级别上的[Route(“[controller]”)]
属性作为该控制器上所有路由的路由前缀,以创建操作方法的自定义属性路由定义
[Route("[controller]")]
public class HomeController : Controller
{
[Route("myseofriendlyurlslug")]
public IActionResult Index()
{
return View();
}
}
现在可以通过yourBaseUrl/Home/myseofriendlyurlslaug
请记住,当像上面那样使用属性路由时,传统的路由模式将不起作用 这工作很好
//Startup.cs
public class Startup
{
public IConfiguration Configuration { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller}/{action}/{id?}", new { controller = "Home", action = "Index" });
});
}
}
...
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
...
//HomeController.cs
[Route("[controller]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
...
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
....
你在尝试什么url?当我转到localhost:5000/Home时,它会显示页面。它只是不把它作为默认值…您不需要定义“模板”吗?只是问问而已。我也碰到过这个,现在想想就明白了。属性应优先于默认路由模板。