我有模特:
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(这是我的计算机语言环境)格式的形式中,为什么?
如果尝试设置MyDateFormat =“dd.MM.yyyy”,则无效,请参阅dd.MM.yyyy:
据我所知,yyyy-MM-dd是.net运行时本地格式,而dd.MM.yyyy是我的计算机本地格式。
如何这样做,以便不依赖于计算机和.net运行时语言环境的区域设置?
答案 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; }