7

我从来没有在这里遇到过这种代码模式。有人愿意向我解释吗?(或者这里甚至有一个模式?这样做有什么原因吗?这样做有什么好处?)我是一般编程的新手,这对我来说非常有趣:

全球.asax.cs

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        //...
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        //...
    }

WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

路由配置.cs

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
4

2 回答 2

5

这不是单一职责原则 (SRP)的示例。在 Global.asax 中,我们知道设置所需的高级任务,但我们将实现分开。

于 2012-09-14T01:13:34.417 回答
5

您可以像这样轻松地在示例中编写代码:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional });

    RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    RouteTable.Routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { 
            controller = "Home", 
            action = "Index", 
            id = UrlParameter.Optional });
}

但是,随着必要配置数量的增加,将其拆分为几个逻辑相关的块是有意义的。ASP.NET MVC 很好地支持这一点,默认项目模板只是试图引导您这样做。

于 2012-09-14T01:17:48.527 回答