asp.net mvc的url能不能把controller名字去掉。。。。。。。
比如:www.aa.com/product/search变成www.aa.com/search
可以,但要额外添加一个路由映射:
routes.MapRoute("Search", "search", new {controller = "product", action="search"}
能,URL设计, 都是有路由系统来完成的,不过你得考虑设置了之后不会影响其它路由
怎么配置呢
@拖鞋王子: 就是上面那个样子了.你要隐藏控制器,那你得用其它方法让路由确定是哪个控制器,
比如所有/search 这样只有1级的路由,默认控制器都是 product
或者www.aa.com/product_search 这样弄 也算是一级了
我来打个酱油
routes.MapRoute(
null,
"{action}",
new {controller = "product"}
)
这样的话匹配只有一个片段的URL
楼上的那个用的是静态片段,也就是只能匹配【www.aa.com/search】这样的URL,而如果你想让其他URL也都隐藏 controller的话,还是用这个好点吧,,
不过,话说你这样做是为什么呢?
毕竟只能网站中的某一个controller可以这样隐藏吧,一个网站不可能只有一个控制器吧,不可能全部隐藏吧
如果要把所有控制器的名字都隐藏起来...
routes.MapRoute(null, "flag1{action}", new {controller = "product"});
routes.MapRoute(null, "flag2{action}", new {controller = "Person"});
routes.MapRoute(null, "flag3{action}", new {controller = "user"});
恐怕只能用一个设计好的路由方案了吧
PS:以上为个人观点,毕竟我是个菜鸟,如有不周请见谅
routes.MapRoute(
null,
"{action}",
new {controller = "product"}
)
好像不行
你应该新建一个 searchController。
这样确实可以,但是能不能用productController的search实现
@拖鞋王子: 可以,但是你那是错误的做法,所以我不告诉你怎么实现。
@Launcher: 打个比方就当前这个地址:http://q.cnblogs.com/q/65477/,不就是这样的