使用Url.action或类似

时间:2015-06-04 08:04:20

标签: c# asp.net-mvc datetime get asp.net-mvc-5

我很清楚在查询字符串中放置日期的问题以及他们在这种情况下忽略任何全球化的方式。我在我的应用程序的大多数地方使用标准的英国格式dd / MM / yyyy - 我在我的web.config中设置了<globalization uiCulture="en-GB" culture="en-GB" />,并且还使用自定义模型绑定器来确保使用时甚至POSTed日期将解析英国格式。来自Melvyn Harbour - MVC ModelBinder and Localization

我已经阅读了一些帖子,建议在传递Url中的日期时将格式设置为yyyy-MM-dd,这听起来像个好计划。问题是当我调用url.action时如何设置它:

urlHelper.Action(actionName, controllerName, FilteringOptions);

其中FilteringOptions是一个具有DateTime属性的类,因此:

public class FilteringOptions{
  public string SearchTerm{get;set;}
  public DateTime? FromDate{get;set;}
  public DateTime? ToDate{get;set;}
  public int? BrandID {get;set;}
  //...etc
}

我知道上面的Url.Action调用中的最后一个参数卡在RouteValueDictionary中,并且DateTime属性在这里变得不稳定,恢复到美国日期格式而不是英国是我一直在处理的 - 当然,当解析一个双向无效的日期时,它会失败,或者更糟糕的是,只是将日期和月份数字交换而不是造成其他混乱。

我很高兴能够使用yyyy-mm-dd格式传递日期,但我如何确保使用格式? - 无需绕过类中的所有属性并在日期上调用ToString(“yyyy-mm-dd”)。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您只需更改系统日期格式,即可完美运行。