【发布时间】:2017-12-31 08:37:30
【问题描述】:
我想在 MVC 应用程序中显示来自模型的德语日期格式 (dd.MM.yyyy) 的日期,并为用户提供一个日期选择器。我已经解决了很多关于这个主题已经回答的问题,但仍然无法让它发挥作用。我在 Firefox 和 Edge 中进行了尝试,每一步的结果都相同。
第 1 步:
型号:
private DateTime? inbetriebnahmedatum;
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
查看:
@Html.EditorFor(model => model.Inbetriebnahmedatum, new { htmlAttributes = new { @class = "form-control", placeholder = "Datum eingeben" } })
第 2 步:添加数据类型
型号:
private DateTime? inbetriebnahmedatum;
[DataType(DataType.Date)]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
视图:不变
第 3 步:添加 DisplayFormat,删除 Datatype
型号:
private DateTime? inbetriebnahmedatum;
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
视图:不变
第 4 步:向 Web.config 添加 ui 文化
Web.config
<globalization uiCulture="de-DE" culture="de-DE" />
第 5 步:再次添加数据类型
型号:
private DateTime? inbetriebnahmedatum;
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
【问题讨论】:
-
DataFormatString在生成浏览器HTML-5日期选择器时必须是yyyy-MM-dd(ISO格式),然后它将显示在用户文化中,这是使用它的重点。 -
使用 jQuery 日期选择器(例如 jQueryUI),但您还需要重新配置
$.validator以进行客户端验证。 -
@StephenMuecke:你是对的,现在它可以工作了 - 谢谢。
标签: c# asp.net-mvc