ASP.NET MVC路由

时间:2010-04-23 04:56:47

标签: asp.net asp.net-mvc asp.net-mvc-routing

我能看到一个能让这段代码编译的例子吗?

    public IEnumerable<RouteBase> Routes
    {
        get
        {
            return new List<Route>()
            {
                new Route(...)
            }
        }
    }

如果RouteCollection.MapRoute()不存在,您会怎么做?

我正在尝试让我的Controller负责映射路由,而不是Global.asax.cs。 public IEnumerable<RouteBase> Routes是我的财务主任的成员。如果Controller负责路由,那么在routes.MapRoute()的{​​{1}}中使用单独的硬编码网址来解耦路由是个坏主意。

回应哈维先生:

Global.asax.cs

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        RouteTable.Routes.Include(new RootController());
    }
}

public static class RouteCollectionExtension
{
    public static RouteCollection Include(this RouteCollection routes, IRoutedController controller)
    {
        foreach (var route in controller.Routes)
        {
            routes.Add(route);
        }

        return routes;
    }
}

1 个答案:

答案 0 :(得分:2)

在这篇文章中让我害怕的一行是以下

  

我正试图让我的控制器进入   负责绘制路线

asp.net mvc背后的整个想法是明确的关注点。这将破坏控制器的可测试性,因为控制器不仅仅是控制而是干扰路线。