[英]ASP.NET MVC Routes
我可以看到一个可以使这段代码编译的示例吗?
public IEnumerable<RouteBase> Routes
{
get
{
return new List<Route>()
{
new Route(...)
}
}
}
如果RouteCollection.MapRoute()
不存在,该怎么办?
我试图让我的控制器负责映射路由,而不是Global.asax.cs。 public IEnumerable<RouteBase> Routes
是我的控制器的成员。 如果Controller负责路由,则通过在Global.asax.cs
中的routes.MapRoute()
中使用单独的硬编码URL来断开路由耦合是一个坏主意。
在回应哈维先生时:
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;
}
}
和:
public class RootController : Controller, IRoutedController
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public IEnumerable<RouteBase> Routes
{
get
{
return new List<Route>()
{
new Route("{controller}/{action}/{id}", ...?!?)
};
}
}
}
在这篇文章中吓到我的一行是以下内容
我正在尝试让我的控制器负责映射路线
asp.net mvc背后的整个想法是明确的关注点分离。 这将杀死控制器的可测试性,因为控制器不仅不再控制,而且还干预路由。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.