我到处看到的 MVC 风格路由的例子是这样的:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
将 RouteTable.Routes 集合传递给 RegisterRoutes() 的原因是什么?为什么不只是:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
public static void RegisterRoutes()
{
RouteTable.Routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
除了 RouteTable.Routes 之外,还有哪些 RouteCollection 会添加路由?RouteTable.Routes 不是Web 应用程序的RouteCollection 吗?
我有一个具有 Map() 方法的特定 IRouteHandler:
public class ChatRouteHandler : IRouteHandler
{
private static bool mapped;
public void Map()
{
if (!ChatRouteHandler.mapped)
{
RouteTable.Routes.Add
(
new Route("chat/{room}/{date}",
new ChatRouteHandler())
);
}
}
Map() 是否有理由接受 RouteCollection 而不是添加到 RouteTable.Routes 集合中?同样,这个 IRouteHandler 还会添加到其他哪些 RouteCollection 中?