1

我在 .NET Framework v4.0 上运行的 ASP.NET MVC 3 项目的区域注册中有以下内容:

context.MapRoute(null,
                 "YardJob/{location}/{from}",
                 new { controller = "YardJob", 
                       action = "List", 
                       from = DateTime.Now });

我的问题是:如果路由引擎使用“from”的默认路由值,控制器上的 List 方法是否总是以当前日期和时间调用?

路由引擎中是否有任何缓存可能导致请求之间重用默认路由值?

谢谢,

4

2 回答 2

1

正如公认的答案所解释的,这是不可能的。但是,为了完整起见,以下是解决此问题的方法:

路线:

context.MapRoute(null,
    "YardJob/{location}/{from}",
     new { controller = "YardJob", 
     action = "List", 
     from = UrlParameter.Optional }
);

控制器动作:

public ActionResult List (string location, DateTime from)
{
    if (from == null)
        from = DateTime.Now;
}
于 2013-03-14T18:44:30.633 回答
0

注册路由的过程是在应用启动时执行的,所以如果你把 DateTime.Now 字段的默认参数是应用启动的时间,只有在 AppPool 回收时才改变

应用程序何时启动?当请求 ASP.NET 应用程序中的第一个资源(例如页面)时。Global.asax 中的 Application_Start 方法在应用程序的生命周期中只调用一次。您可以使用此方法执行启动任务,例如将数据加载到缓存中和初始化静态值。

查看生命周期

于 2013-03-14T17:35:50.643 回答