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如何工作以及原因的更多信息: