ASP.NET MVC中的自定义DateTime格式

时间:2014-12-12 11:10:47

标签: c# asp.net asp.net-mvc asp.net-mvc-4 datetime

我有ASP.NET MVC创建视图。

此视图绑定了ViewModel,其中包含两个DateTime对象:

[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime When { get; set; }
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Until { get; set; }

我将它绑定到DatePickers,如下所示:

@Html.EditorFor(model => model.When, new { @class = "form-control ui-datepicker-my" })
@Html.EditorFor(model => model.Until, new { @class = "form-control ui-datepicker-my" })

并且日期选择器的配置如下:

<script type="text/javascript">
    $().ready(function()
    {
        $(".ui-datepicker-my").datepicker({
            dateFormat: "dd-mm-yy"
        });
    });
</script>

问题是,当我发布表单时,我的模型无效。我的意思是日期'22 -02-2014'正在以错误的格式转换(它试图将'22'作为月份读取)

我不想惹恼全球文化。

怎么做?

我尝试过编辑它:

@Html.EditorFor(model => model.When,"{0:dd-MM-yyyy}", new { @class = "form-control ui-datepicker-my" })

但没有进展

1 个答案:

答案 0 :(得分:0)

如果你真的坚持不为应用程序/页面设置文化(它会咬你)。你可以用这个:

DateTime.TryParseExact(inputedDateString, formatOfInput, CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out result))

类似

DateTime myDate  = DateTime.MinValue;
string valueFromForm = "22-02-2014";
DateTime.TryParseExact(valueFromForm , "dd-MM-yyyy", CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.None, out myDate))