为啥日期时间选择器的行为?
Posted
技术标签:
【中文标题】为啥日期时间选择器的行为?【英文标题】:Why datetime picker behaves?为什么日期时间选择器的行为? 【发布时间】:2016-02-08 16:14:26 【问题描述】:我有模特:
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 运行时语言环境?
【问题讨论】:
你用的是什么日期选择器? jQuery 用户界面? 引导日期选择器使用 Bootstrap 不附带日期选择器。 【参考方案1】:我相信您缺少表达式周围的花括号。
尝试将表达式 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");
【讨论】:
谢谢,TextBoxFor 工作,但文本框样式未应用,添加类“form-control” - 显示没有样式【参考方案2】:您指定DataFormatString
的问题是错误的,因为您应该使用"0:yyyy-MM-dd"
而不是"yyyy-MM-dd"
。请尝试以下代码,它应该可以工作:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "0:yyyy-MM-dd", ApplyFormatInEditMode = true)]
public DateTime? Date get; set;
【讨论】:
以上是关于为啥日期时间选择器的行为?的主要内容,如果未能解决你的问题,请参考以下文章