【问题标题】:MVC EditorFor Date not showing ValueMVC EditorFor Date 不显示值
【发布时间】: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


【解决方案1】:

我不确定,但你可以试试这个 尝试输入 >> : 01/01/2018

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]

Show Time and data using Data annotation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2011-06-30
    相关资源
    最近更新 更多