模型属性验证问题

时间:2014-01-15 17:29:52

标签: c# .net asp.net-mvc validation displayformat

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

enter image description here

我无法理解为什么会发生这种情况?

型号

[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>

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

对我们来说没什么用的......

因此,我在模型中添加了1个额外字段,并将DateTime保持为String,格式为我需要的格式。

对于我需要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; }