我能看到一个能让这段代码编译的例子吗?
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;
}
}
答案 0 :(得分:2)
在这篇文章中让我害怕的一行是以下
我正试图让我的控制器进入 负责绘制路线
asp.net mvc背后的整个想法是明确的关注点。这将破坏控制器的可测试性,因为控制器不仅仅是控制而是干扰路线。