首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RouteTable.Routes RouteCollection?

RouteTable.Routes RouteCollection?
EN

Stack Overflow用户
提问于 2009-03-30 04:30:59
回答 1查看 14.5K关注 0票数 11

我看到的MVC风格路由的例子如下所示:

代码语言:javascript
复制
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()的原因是什么?为什么不只是:

代码语言:javascript
复制
void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes();
}

public static void RegisterRoutes()
{
    RouteTable.Routes.Add(new Route
    (
         "Category/{action}/{categoryName}"
         , new CategoryRouteHandler()
    ));
}

除了RouteTable.Routes之外,还会添加什么RouteTable.Routes?RouteTable.Routes 不是web应用程序的 RouteCollection吗?

我有一个特定的IRouteHandler有一个Map()方法:

代码语言:javascript
复制
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集合中吗?同样,这个RouteCollection还会添加到哪个IRouteHandler中呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-30 04:37:43

单元测试。

通过(通过参数传递)将注册与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对此一无所知。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/696000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档