似乎无法让我的默认路由在ASP.NET Core 2.0中运行,我忽略了什么?
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" });
});
}
}
HomeController.cs
[Route("[controller]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
当我浏览网址时,没有任何反应,没有重定向到主页?
答案 0 :(得分:11)
只需删除控制器上的[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/myseofriendlyurlslug
请记住,在使用上述属性路由时,传统的路由模式将无法正常工作。
答案 1 :(得分:1)
这项工作很好
// Startup.cs
...
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
...
// HomeController.cs
...
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
....