Areas功能
可以实现这种类型的路由,而不领域,但作为控制器的数量变大网站的可维护性会减弱。本质上,你所做的是将控制器名称硬编码到路由定义中,这意味着你必须为每个新的管理控制器添加新的路由映射。以下是您可能想要设置不带区域的路线的几个示例。
routes.MapRoute("AdminQuestions", // Route name
"admin/question/{action}/{id}", // URL with parameters
new { controller = "AdminQuestion", action = "Index" } // Parameter defaults
);
routes.MapRoute("AdminUsers", // Route name
"admin/user/{action}/{id}", // URL with parameters
new { controller = "AdminUser", action = "Index" } // Parameter defaults
);
或者,您也可以通过管理控制器路线的一切,但它很快就会变得非常混乱与您的控制器操作执行多个角色。
routes.MapRoute("Admin", // Route name
"admin/{action}/{type}/{id}", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
与您AdminController行动(S)看起来像:
public virtual ActionResult Create(string type, int id)
{
switch (type)
{
case 'question':
// switch/case is code smell
break;
case 'user':
// switch/case is code smell
break;
// etc
}
}
它像我想要一个控制器“管理员”和两个动作“用户”和“删除” – 2010-08-04 19:40:33
较长的路线必须是前短路线。发布您的路由代码。 – 2010-08-04 19:41:52
对不起,我还没有它......只是想知道如何使更改默认处理这个谢谢 – 2010-08-04 19:46:52