protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// 路由定义
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
// 使用自定义路由来包含控制器名称的一部分
routes.MapRoute(
"MyCustomRoute",
"{namespace}/{controller}/{action}/{id}",
new { namespace = "MyNamespace", action = "Index", id = UrlParameter.Optional }
);
}
public class MyCustomControllerFactory : DefaultControllerFactory { public override Type GetControllerType(RequestContext requestContext, string controllerName) { // 添加命名空间作为 URL 的一部分 string namespaceName = (string) requestContext.RouteData.Values["namespace"]; string fullControllerName = namespaceName + "." + controllerName + "Controller";
// 查找匹配的控制器类型
Type controllerType = Type.GetType(fullControllerName);
if (controllerType == null)
{
throw new HttpException(404, "Controller not found");
}
return controllerType;
}
}
protected void Application_Start() { // 注册自定义控制器工厂 ControllerBuilder.Current.SetControllerFactory(new MyCustomControllerFactory());
// 路由注册
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}