1

我正在使用 ASP.net MVC 3 开发电子商务应用程序

在找出映射“类别”的最佳方式时遇到了一些麻烦

对于每个类别,我都有一个根页面 - 将显示一些优惠、信息等。(这些是示例)

  • /图书
  • /衣服
  • /电子产品

目前,我有一个书籍控制器,一个运动控制器,以及一个电子控制器,每个控制器的索引返回适当的视图......

这似乎有点“笨拙”,好像添加了一个新类别,我们必须为它创建一个控制器..

在产品数据库中,我在层次结构中有“扁平化”的类别。所以,一本关于计算的书可能有:

  • /图书/
  • /书籍/非小说类/
  • /书籍/非小说类/计算

我还有一个“搜索”控制器,它处理产品搜索(搜索/?q=一些查询)另外,可以搜索/?q=*&category=/books/non-fiction/computing - 这将显示所有带有 /books 的产品/非小说类/计算列为一个类别。

所以......我想我想要做的......是路由“根”类别以显示该类别的默认视图。如果之后有什么,应该被当作分类搜索...

有没有办法做到这一点?

4

1 回答 1

1

我认为最好的解决方案是只有一个产品控制器,其中索引操作采用可选参数。如果参数为空或 null 则只返回您要显示的产品的默认列表,否则,根据字符串中提供的类别过滤产品。

例如,这将是 URL:

/products/books 
/products/clothes 
/products/electronics
/products/whatever

或者,如果您不喜欢将其发送到您喜欢的任何控制器/操作的 URL,您可以为每个类别添加路由。老实说,这是个人喜好以及您最喜欢的任何东西。

例如:

context.MapRoute(
          "books_route",
          "products/books/{type}",
          new { controller = "product", action = "books", type= UrlParameter.Optional }
      );

or 


   context.MapRoute(
          "books_route",
          "books/{type}",
          new { controller = "product", action = "books", type= UrlParameter.Optional }
      );
于 2011-10-04T16:19:54.390 回答