繁体   English   中英

ASP.NET MVC路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM