尝试更改MVC 5应用程序中的路由

时间:2015-07-26 19:35:59

标签: routing asp.net-mvc-5

当我开始使用此网站时,我并没有想太远,忘了将产品类别添加到我的数据模型中。现在,当我单击Products时,它会显示Index视图,其中显示所有项链。像这样的路径/ Products / Index。

现在我要做的就是更改路由,以便Index显示一个类别列表,然后当你点击时,比如项链,我想要一条像这样的路径/ Products / Necklaces / Index,等等。我可以在我的Products文件夹(我的观点所在位置)中添加文件夹,或者如何更改路由以考虑此更改?

我在 RouteConfig.cs 文件中尝试了这个

routes.MapRoute(
       name: "Products",
       url: "{controller}/{category}/{action}/{id}",
       defaults: new { controller = "Products", category = "Necklaces", action = "Index", id = UrlParameter.Optional }

);

但是 / Products / Necklaces / Index 仍然给我一个404错误

1 个答案:

答案 0 :(得分:2)

以下两种方法可以解决此问题。

您可以像以前一样将此以下内容添加到RouteConfig.cs中。

routes.MapRoute(
    name: "Products",
    url: "{controller}/{category}/{action}/{id}",
    defaults: new { controller = "Products", action = "Index", id = UrlParameter.Optional }
);

OR

将此添加到您的RouteConfig.cs。

routes.MapMvcAttributeRoutes();

然后将此Route属性添加到Index Action。

// The id? means it is an optional parameter.
[Route("Products/{category}/Index/{id?}")]
public ActionResult Index(string category, string id)
{
    return View();
}

这两种方法都有效。

确保您的Action对于这两种方法都是如此。