我正在格式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>
答案 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; }