首页 新闻 会员 周边

郁闷,MVC5做着做着,MVC路由就冲突了。

0
悬赏园豆:5 [已解决问题] 解决于 2014-07-21 21:58

因为想让URL地址更有意义,一般用自定义路由功能。

例如:可生成game和game/2这样的路径

[Route("{categoryindex}/{page?}")]
public ActionResult all(string categoryindex, int page = 1)
{

return View();

}

但是这条路由就会把默认路由给冲掉。

访问默认路由/home/index,/home/about就出错了,郁闷啊。

 

不知道广大园友们有哪些对策?

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2014-07-15 13:42
< >
分享
最佳答案
0

[Route("{/home/categoryindex}/{page?}")]

收获园豆:5
Launcher | 高人七级 |园豆:45045 | 2014-07-15 14:05

我是想URL能短就尽量短点。你这样的话又多了一个Home.

DZCMS | 园豆:5 (初学一级) | 2014-07-15 14:09

@abc54288: 因为你这个根本就不标准,路由映射到 Controller 的 Action 的参数的 Uri 的规范写法是这样: Controller/Action?categoryinde=2&page=2,而你非要映射成这样:categoryinde/page?,自然就跟全局设置的 Controller/Action 冲突。

你要记住一个原则,Controller 和 Action 出现在 uri 路径中,而 Action 上的参数应该出现在 uri 的查询信息中。如果需要出现在路径中,你也应该让参数路径跟在 Controller/Action 之后。不说别的,别人读你的代码才容易读懂。

Launcher | 园豆:45045 (高人七级) | 2014-07-15 14:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册