【问题标题】:ASP.Net MVC model binding - how to change date format?ASP.Net MVC 模型绑定 - 如何更改日期格式?
【发布时间】:2011-08-17 19:53:59
【问题描述】:

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

我已经将文化和 UI 文化设置为 pt-BR,现在 myDate.ToShortDateString() 返回我想要的日期。我可以毫无问题地显示它们。

问题是,当用户用17/08/2011 之类的日期填写输入字段并提交表单时,我的操作的DateTime 参数变为空。如果我提供08/17/2011 格式的日期,它可以正常工作。

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

【问题讨论】:

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


【解决方案1】:

我发现发生了什么。我的表单是通过GET 方法发布的,当通过RouteData 或通过POST 方法通过表单传递时,MVC 仅使用文化作为操作参数。

我刚刚将表单更改为POST 方法,它起作用了。

【讨论】:

【解决方案2】:

在视图模型中的属性上试试这个:

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

【讨论】:

    【解决方案3】:

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

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

    编辑**

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

    [HttpPost] 公共 ActionResult DoStuff(字符串 dateParam) { return RedirectToAction("Home","Index", new { }); }

    "dateParam" 应该匹配这里的 name 属性。

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

    【讨论】:

    • 将日期输出到 HTML 不是问题。绑定提交的值是。即使我按照您说的做,表单提交也不会按预期工作。
    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多