为什么日期时间选择器表现如何?

时间:2015-11-07 16:31:38

标签: c# date datetime datepicker asp.net-mvc-5

我有模特:

const string MyDateFormat = "yyyy-MM-dd";

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = MyDateFormat, ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }

并查看:

@Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control datepicker" } })
由于某种原因,谁在表单加载时没有设置模型值,我想知道为什么?
我必须手动:

<script type="text/javascript">
    $(document).ready(function () {
        var elem = $("#Date").val('@Model.Date.ToString(MyDateFormat)');
    });
</script>

但是,在我看到dd.MM.yyyy(这是我的计算机语言环境)格式的形式中,为什么?
enter image description here

如果尝试设置MyDateFormat =“dd.MM.yyyy”,则无效,请参阅dd.MM.yyyy:
enter image description here

据我所知,yyyy-MM-dd是.net运行时本地格式,而dd.MM.yyyy是我的计算机本地格式。
如何这样做,以便不依赖于计算机和.net运行时语言环境的区域设置?

2 个答案:

答案 0 :(得分:2)

我相信你错过了表达式周围的花括号。

尝试将表达式yyyy-MM-dd包装在大括号中{0:yyyy-MM-dd}

const string MyDateFormat = "{0:yyyy-MM-dd}";

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = MyDateFormat, ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }

您还可以在视图中使用以下内容,而不是使用DisplayFormat属性修饰模型属性。

@Html.TextBoxFor(model => model.Date, "{0:yyyy-MM-dd}", new { @class="datePicker"});

答案 1 :(得分:1)

您指定DataFormatString的问题是错误的,因为您应该使用"yyyy-MM-dd"代替"{0:yyyy-MM-dd}"。请尝试以下代码,它应该工作:

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