asp.net mvc 6.0 中的区域找不到索引文件

Areas in asp.net mvc 6.0 does not find Index file

我想在 MVC 6.0 项目中使用区域。

这些是我的路线:

   app.UseMvc(routes =>
            {
                // NOT work
                routes.MapRoute("new_default",
                        "{area}/{controller=Home}/{action=Index}/{id?}");
              // NOT work
              routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}");



                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

                // Uncomment the following line to add a route for porting Web API 2 controllers.
                // routes.MapWebApiRoute("DefaultApi", "api/{controller}/{id?}");
            });

我在我的根项目上创建了一个

"Areas" folder
"Application" folder
 with a 
Controllers/HomeController.cs
Views/Home/Index.cshtml

[Area("Application")]
    [Route("[controller]")]
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }
    }

当我去 url:

domain/Application/Home 它没有找到索引文件我得到一个 404,为什么?

将属性路由的模板更改为喜欢[Route("[area]/[controller]")]。现在您的 /application/home 之类的请求应该可以正常工作了。

这里的areacontrolleraction是路由标记,它们将被该属性所修饰的区域、控制器和动作名称所取代。这是 ASP.NET5 中的一个新概念,用于减少重复提供相同值的冗余。

请注意,当您使用属性路由修饰 controllers/actions 时,它们无法从您启动时定义的常规路由到达 class。