我对路由有个疑惑的地方,假设我所有后台的操作的地址都是以Admin开头,比如我现在要在后台系统里面显示用户的列表(后台以/admin开头),所以我加了一条路由:
/admin/{controller}/{action}/{id}
这样/admin/user/list/这种url确实可以匹配到usercontroller的list方法,可是同时/user/list这个url能匹配到默认路由,同样能定位到list方法
这种情况应该怎么办呢?或者说有其他更合适的自定义路由的方式么?
谢谢,我最后是为admin的每一种情况都定义了一个路由,看起来是可以了
1:定义所有情况的路由
2:交给一个Action去判断调用相应Action
对于后台用admincontroller就可以了吧
后台可能有很多操作,比如用户(User),新闻(News),角色(Role)等等,我是把每个模块放到一个controller里面,难道都放到一个admincontroller里面?
@imdingji:
把这些放到admincontroller中是可以的,并且常用的就是把管理部分放到一个controller中,方便权限控制
谢谢!这样一来,admincontroller类不是很长很长?当然这个可以用partial类解决
但是还有个小问题,比如用户的列表和创建,那么就只能是:/Admin/UserList和/Admin/UserCreate,分别映射到AdminController中的UserList和UserCreate方法,有没有可能变成/Admin/User/List和/Admin/User/Create呢?
@imdingji:
再用地址重写是可以的,但这样做的意义不大
还有,你可以把User做为action,后面的(List、Create)做为参数,这样可以用/Admin/User/List、/Admin/User/Create
你添加了几个路由列表啊?
另外可以先不路由参数的设置默认填充值去Debug下看看问题为好
---------
以/admin/开头 可以用Area了
还有路由表它有一个搜索顺序的.定义靠前的路由表会被先匹配.
具体可以看看
http://www.cnblogs.com/highend/archive/2011/07/27/aspnet_mvc3_route.html