【问题标题】:DateEdit doesn't work with custom date formatDateEdit 不适用于自定义日期格式
【发布时间】:2016-09-29 10:44:06
【问题描述】:

我有这个模型:

[ModelBinder(typeof(DevExpressEditorsBinder))]
public class RegisterViewModel
{
    [Required]
    [DataType(DataType.Date)]
    [Display(Name = "Дата рождения"), DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
    public DateTime Birthdate { get; set; }
}

并查看代码:

@*Html.EditorFor(s => s.Birthdate)*@
@Html.DevExpress().DateEditFor(s => s.Birthdate, settings =>
{
    settings.Properties.DisplayFormatString = "dd.MM.yyyy";
    settings.Properties.EditFormatString = "dd.MM.yyyy";
}).GetHtml()

第一个变体(已注释)完美运行,但我需要使用 DevExpress。并且 DevExpress DateEdit 仅当我在任何地方设置 MM.dd.yyyy 格式时才会发送正确的值。否则,验证器输出:

出生日期字段必须是日期。

我该如何解决这个问题?

【问题讨论】:

  • 该问题与jquery.validate.js 有关,它根据MM/dd/yyyy 格式验证日期(请参阅this answer 以获得解释)。我不熟悉,但我认为DateEditFor() 有一种解析日期的方法,以便您可以使用类似于this answer 的解决方案
  • 当然有。但我不知道如何为 DX DateEdit 设置它。
  • 谢谢你的解释,我不知道validate

标签: c# asp.net asp.net-mvc-5 devexpress-mvc


【解决方案1】:

根据DateEdit documentation,您可以使用EditFormat.Custom 将自定义编辑格式设置为DateEditFor,如下所示:

@Html.DevExpress().DateEditFor(s => s.Birthdate, settings =>
{
    settings.Properties.DisplayFormatString = "dd.MM.yyyy";
    settings.Properties.EditFormat = EditFormat.Custom; // add this line
    settings.Properties.EditFormatString = "dd.MM.yyyy";
}).GetHtml()

正如@Stephen 所说,DX 扩展了基于 jQuery 捆绑包的客户端验证,这需要在布局页面或视图页面上加载 jquery.validate.jsjquery.validate.unobtrusive.min.js。因此,您可以使用内置验证或远程验证来检查有关EditFormatString 属性的日期格式(请参阅下面的参考资料)。

验证参考:

Built-in Validation

Remote Validation

类似日期格式的相关问题:

DateEdit - Bind to a nullable property

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多