【问题标题】: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 不附带日期选择器。

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


【解决方案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; }

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多