ASP.Net MVC模型绑定 - 如何更改日期格式?

时间:2011-08-17 19:53:59

标签: c# asp.net-mvc-3 date-format

我有这个应用程序,默认日期格式必须是dd/MM/yyyy(语言是巴西葡萄牙语)。

我已经将文化和UI文化设置为pt-BR,现在myDate.ToShortDateString()会根据需要返回日期。我毫不费力地展示它们。

问题是,当用户使用诸​​如17/08/2011之类的日期填充输入字段并将表单提交给我的操作时,DateTime参数变为null。如果我提供08/17/2011格式的日期,则可以正常使用。

如何使ASP.Net MVC模型绑定以正确解析我的日期?

3 个答案:

答案 0 :(得分:10)

我发现了什么。我的表单是通过GET方法发布的,MVC只是在RouteData传递时使用文化作为参数,或者通过POST方法传递给表格。

我刚刚将表单更改为POST方法,但它确实有效。

答案 1 :(得分:5)

在视图模型中的属性上尝试此操作:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]

答案 2 :(得分:2)

我很确定问题是你的DateTime类型缺少DateTimeFormat。

<input type="text" name="DateProperty" id="DateProperty"
       value="@(Model.DateProperty.Value.ToString("d",
             System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat))" />

编辑**

您想要确定的另一件事是输入元素的“name”属性与您传递给操作的内容相匹配。如果它不为null,则每次都会出现在POST操作上。

     [HttpPost]
     public ActionResult DoStuff(string dateParam)
     {
       return RedirectToAction("Home","Index", new { });
     }

“dateParam”应与此处的name属性匹配。

<input id="dateParam" name="dateParam" value="10/10/2010" />