看起来像asp.net mvc中的日期工具不正确

时间:2012-04-02 13:19:01

标签: asp.net asp.net-mvc data-binding

enter image description here

我在QueryString中以值:3/1/2012

开始更新

DateTime.Parse(Request.QueryString [“startdate”])。月份返回月份数:1

但在我的控制器中我有动作索引(DateTime startDate)和startDate.Month返回3

有人能解释为什么日期绑定不能按预期工作吗?

不过,我已经在web.config中有了文化:

<globalization uiCulture="en-GB" culture="en-GB"/>

1 个答案:

答案 0 :(得分:6)

默认模型绑定器始终在解析查询字符串值时使用InvarianCulture,无论您在web.config中配置了哪种文化。

  • GET =&gt; InvariantCulture的
  • POST =&gt;文化不可知

假设你有2个动作:

[HttpGet]
public ActionResult Foo(DateTime date)
{
    ...
}

[HttpPost]
public ActionResult Bar(DateTime date)
{
    ...
}

当您调用Foo操作时,应始终使用不变文化来格式化查询字符串中的日期,而当您调用Bar操作并在POST主体有效内容中传递date参数时,默认模型绑定器将使用在web.config中配置文化。

请查看详细介绍的following blog post