首页 新闻 搜索 专区 学院

asp.net mvc的url能不能把controller名字去掉

0
[待解决问题]

asp.net mvc的url能不能把controller名字去掉。。。。。。。

比如:www.aa.com/product/search变成www.aa.com/search

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:50
提问于:2014-08-30 19:13
< >
分享
所有回答(4)
0

可以,但要额外添加一个路由映射:

routes.MapRoute("Search", "search", new {controller = "product", action="search"}

519740105 | 园豆:5810 (大侠五级) | 2014-08-30 20:55
0

能,URL设计, 都是有路由系统来完成的,不过你得考虑设置了之后不会影响其它路由

吴瑞祥 | 园豆:28851 (高人七级) | 2014-08-30 23:01

怎么配置呢

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-08-30 23:03

@拖鞋王子: 就是上面那个样子了.你要隐藏控制器,那你得用其它方法让路由确定是哪个控制器,

比如所有/search 这样只有1级的路由,默认控制器都是 product

 或者www.aa.com/product_search 这样弄 也算是一级了

支持(0) 反对(0) 吴瑞祥 | 园豆:28851 (高人七级) | 2014-08-30 23:11
0

我来打个酱油

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:以上为个人观点,毕竟我是个菜鸟,如有不周请见谅

算了 | 园豆:3 (初学一级) | 2014-08-31 22:22

routes.MapRoute(

  null,

  "{action}",

  new {controller = "product"}

  )

好像不行

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-09-01 12:14
0

你应该新建一个 searchController。

Launcher | 园豆:45045 (高人七级) | 2014-09-01 11:15

这样确实可以,但是能不能用productController的search实现

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-09-01 11:50

@拖鞋王子: 可以,但是你那是错误的做法,所以我不告诉你怎么实现。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-09-01 13:02

@Launcher: 打个比方就当前这个地址:http://q.cnblogs.com/q/65477/,不就是这样的

支持(0) 反对(0) 拖鞋王子 | 园豆:50 (初学一级) | 2014-09-01 13:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册