MVC 4自定义路由

时间:2012-12-17 16:45:39

标签: asp.net-mvc-4

我定义了以下路线:

routes.MapRoute(
            "Content Pages",
            "{action}",
            new { controller = "Pages", action = "Index" });

routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}/{title}",
             new { controller = "Home", action = "Index", 
                   id = UrlParameter.Optional, 
                   title = UrlParameter.Optional },
             new string[] { "MyCompany.Web.Controllers" });

我有一个名为Pages的控制器,它有一些像我们想要访问的“关于”,“常见问题”等操作:mywebsite.com/About

这当前有效,但现在我的所有其他控制器最终都在url中指定了默认操作。我Books的操作链接呈现为mywebsite.com/Books/Index。

如何修改我的路线以便实现这一目标?

1 个答案:

答案 0 :(得分:1)

对于你这样的所有其他控制器,我会有一个更通用的路由(但是把它放在下面的Page路由之后)

routes.MapRoute(
            "Content Pages",
            "{controller}",
            new { Home= "Home", action = "Index" });

并将您的第一页更改为针对这两个操作更具体(假设您没有关于或常见问题控制器)。

routes.MapRoute("About Page", "about", new { controller = "Pages", action = "About" });
routes.MapRoute("FAQ Page", "faq", new { controller = "Pages", action = "FAQ" });