我正在使用ASP.net MVC 3开发电子商务应用程序
找出映射“类别”的最佳方法时遇到一些麻烦
对于每个类别,我都有一个根页面 - 它会显示一些优惠,信息等。 (这些都是例子)
目前,我有一个书籍控制器,一个运动控制器和一个电子控制器 每个索引返回适当的视图......
这似乎有点“笨拙”,好像添加了一个新类别,我们必须为它创建一个控制器..
在产品数据库中,我在层次结构中有“扁平化”类别。 所以,一本关于计算的书可能有:
我也有一个“搜索”控制器 这处理产品搜索(搜索/?q =某些查询) 此外,可以搜索/?q = *& category = / books / non-fiction / computing - 这将显示所有带有/ books / non-fiction / computing的产品作为类别列出。
所以...我认为我正在尝试做的是...路由“根”类别以显示该类别的默认视图。 如果之后有什么,应该被视为类别搜索...
有没有办法做到这一点?
答案 0 :(得分: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 }
);