当我开始使用此网站时,我并没有想太远,忘了将产品类别添加到我的数据模型中。现在,当我单击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错误
答案 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对于这两种方法都是如此。