当前位置:  开发笔记 > 编程语言 > 正文

RouteTable.Routes RouteCollection?

如何解决《RouteTable.RoutesRouteCollection?》经验,为你挑选了1个好方法。

我到处看到的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?

我有一个特殊的IRouteHandler,它有一个Map()方法:

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?



1> CVertex..:

单元测试.

通过从RouteTable.Routes中解耦(通过参数传递)注册,您可以选择在单元测试中使用哪个RouteCollection进行注册.

恕我直言,它也更好地编写routes.Add()而不是RouteTable.Routes.Add()到处都是.

"是否有理由认为Map()应该接受RouteCollection而不是添加到RouteTable.Routes集合?"

我正在将这个问题解释为"为什么RouteCollection没有MapRoute方法,而不是扩展方法?".是的,RouteCollection在System.WEb.Routing中,而MapRoute扩展方法在System.Web.Mvc中.MapRoute()依赖于MvcHandler,System.Web.Routing不知道.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有