C# ASP.NETMVC模型绑定-如何更改日期格式?

C# ASP.NETMVC模型绑定-如何更改日期格式?,c#,asp.net-mvc-3,date-format,C#,Asp.net Mvc 3,Date Format,我有这个应用程序,默认的日期格式必须是dd/MM/yyyy(语言是巴西葡萄牙语) 我已经将区域性和UI区域性设置为pt BR,现在myDate.ToSortDateString()返回我想要的日期。我很乐意展示它们 问题是,当用户用日期(如17/08/2011)填充输入字段并提交表单时,my action的DateTime参数将变为null。如果我以08/17/2011格式提供一个日期,它可以正常工作 如何使ASP.Net MVC模型绑定以正确解析我的日期?我很确定问题在于DateTime类型中

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

我已经将区域性和UI区域性设置为
pt BR
,现在
myDate.ToSortDateString()
返回我想要的日期。我很乐意展示它们

问题是,当用户用日期(如
17/08/2011
)填充输入字段并提交表单时,my action的DateTime参数将变为null。如果我以
08/17/2011
格式提供一个日期,它可以正常工作


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

我很确定问题在于DateTime类型中缺少DateTimeFormat

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

编辑**

您需要确保的另一件事是,输入元素的“name”属性与您传递到操作中的内容相匹配。如果不为空,则每次操作后都会显示空值

[HttpPost] public ActionResult DoStuff(string dateParam) { return RedirectToAction("Home","Index", new { }); } [HttpPost] 公共操作结果DoStuff(字符串dateParam) { 返回重定向操作(“主”、“索引”、新{}); } “dateParam”应与此处的name属性匹配

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

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

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

我发现发生了什么。我的表单是通过
GET
方法发布的,在
RouteData
或通过
POST
方法通过表单传递时,MVC只使用区域性作为操作参数


我刚刚将表单更改为
POST
方法,它成功了。

检查此答案尝试此问题的解决方案将日期输出到HTML不是问题。绑定提交的值为。即使我按照你说的做了,表单提交也不会像预期的那样工作。因为没有人说GET方法不适用文化,所以浪费了一天。救了我一天。。谢谢,不过,您应该更正您的帖子,它与post而不是GET一起工作。有关MVC ModelBinder如何工作以及原因的更多信息: