我在.NET Framework v4.0上运行的ASP.NET MVC 3项目的区域注册中有以下内容:
context.MapRoute(null,
"YardJob/{location}/{from}",
new { controller = "YardJob",
action = "List",
from = DateTime.Now });
我的问题是: 如果路由引擎使用'from'的默认路由值,那么控制器上的List方法是否总是用当前日期和时间调用?
路由引擎中是否存在可能导致在请求之间重用默认路由值的缓存?
谢谢,
答案 0 :(得分:0)
在应用程序启动时执行注册路由的过程,因此如果您放置DateTime.Now,则from字段的默认参数将是应用程序启动的时间,仅在AppPool回收时更改
申请开始时? 当请求ASP.NET应用程序中的第一个资源(如页面)时。 Global.asax中的Application_Start方法在应用程序的生命周期中仅被调用一次。您可以使用此方法执行启动任务,例如将数据加载到缓存中以及初始化静态值。
答案 1 :(得分:0)
正如接受的答案所解释的那样,这是不可能的。但是,为了完整起见,以下是解决此问题的方法:
<强>路线:强>
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;
}