【发布时间】:2011-07-14 13:26:12
【问题描述】:
我真的很难理解路由。这可能以前被问过,但我找不到或没有问正确的方法......
我正在移植现有的经典 asp 站点,并从添加管理仪表板开始。我需要的是,当用户只需输入站点名称时,默认文档 (default.asp) 就会被加载,但是如果他们输入 {site}/Admin 则路由会接管。我的默认路由控制器称为“AdminController”,我将项目设置为在 /Admin 中启动。这行得通,但其他任何事情都行不通,除非我回退到新项目附带的基本默认路由。
愿望:
- {site} -> {site}/default.asp
- {site}/Admin -> 管理员/索引操作
- {site}/Admin/Shops -> Shops/索引操作
- {site}/Admin/Shops/Edit/{id} -> Shops/Edit(id) 操作
这是我的路线,我卡在某个地方:
public static void RegisterRoutes(RouteCollection routes)
{
routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"EditShop", // Route name
"Shops/Edit/{slug}", // URL with parameters
new
{
controller = "Shops",
action = "Edit",
slug = ""
} // Parameter defaults
);
routes.MapRoute(
"Shops", // Route name
"Admin/Shops/", // URL with parameters
new
{
controller = "Shops",
action = "Index"
} // Parameter defaults
);
// default route for this app
routes.MapRoute(
"Admin", // Route name
"Admin/", // URL with parameters
new { controller = "Admin", action = "Index" } // Parameter defaults
);
// default route for this app (this works for all cases except default.asp)
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("NothingMatched", "{*url}",
new {controller = "Error", action = "Http404"});
}
【问题讨论】:
标签: model-view-controller routing