0

我正在格式化DateTime?字段dd/MM/yyyy,当我提交表单时,它显示验证错误。

在此处输入图像描述

我无法理解它为什么会发生?

模型

[Display(Name = "Expected Ending Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? ExpectedEndingTime { get; set; }

HTML

@Html.TextBoxFor(x => x.Requsition.ExpectedEndingTime, new { @class = "form-control dataPickerField", id = "ExpectedEndingTimeDataPicker", @readonly = true })

@Html.ValidationMessageFor(x => x.Requsition.ExpectedEndingTime)



<script>
    $(function () {            
        $('#ExpectedEndingTimeDataPicker').datepicker({
            format: 'dd/mm/yyyy',
            autoclose: true           
        })
        .on('changeDate', function (ev) {
              //  do things;
    );
    });
</script>
4

2 回答 2

1

我认为 DataFormatString 仅用于显示,ModelBinder 不使用它进行解析。所以你的服务器仍然使用来自 web.config 的文化。

您可以在配置中硬编码应与此日期格式一起使用的特定文化。

这是一个可以帮助您的答案 - https://stackoverflow.com/a/8035636/169635 它有一个使用 CurrentCulture 进行解析的 IModelBinder 示例。您可以指定自己的格式

于 2014-01-15T17:37:12.657 回答
0

没有什么对我有用的家伙......

所以我在模型中添加了 1 个额外的字段,并将保持DateTimeString需要的格式。

对于我需要DateTime格式的地方,我有另一个字段。

[Display(Name = "Expected Ending Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? ExpectedEndingTime { get; set; }


[Required]
[Display(Name = "Expected Ending Time")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public string ExpectedEndingTimeAsString { get; set; }  
于 2014-01-15T18:20:02.197 回答