URL路由类别和子类别

时间:2013-08-13 09:32:09

标签: asp.net-mvc web url-rewriting url-routing

我已经搜索了很长时间以解决我的问题,但我没有找到一个......

我想,我不是唯一一个有这个任务并希望得到答案的人。

我的网站存储产品..许多产品。所有这些产品都有一个或多个类别(或子类别)。要检索正确类别的产品不是问题。我将在产品名称的末尾添加此ID,如:http://localhost.com/products/details/books/romance/romeo-and-julia-3245。控制器是产品,动作是细节。

但是,如果我想列出一个类别的所有产品,那么获得干净URL的最佳解决方案是什么?问题是,一个子类别可能存在一次以上。例如:

http://localhost.com/products/list/games/romance

http://localhost.com/products/list/books/romance

如果我在产品控制器中调用列表操作,我无法检测子类别"浪漫"与游戏或书籍有关。

我该如何解决这个问题?

祝你好运

1 个答案:

答案 0 :(得分:0)

您可以尝试为ActionResult List编写2条路线并使用参数:如果ActionLink包含名为games的参数,则需要路线"Games",如果books - 需要路线"Books"

routes.MapRoute(
                name: "Games",
                url: "{controller}/{action}/games/romance",
                defaults: new { controller = "products", action = "List", games = UrlParameter.Optional}
            );

routes.MapRoute(
                name: "Books",
                url: "{controller}/{action}/books/romance",
                defaults: new { controller = "products", action = "List", books = UrlParameter.Optional}
            );

我不确定它是否符合您的需求,但您可以使用这种逻辑。