DateEdit不适用于自定义日期格式

时间:2016-09-29 10:44:07

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

我有这个型号:

[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。只有当我在任何地方设置DateEdit格式时,DevExpress MM.dd.yyyy才会发送正确的值。否则,验证器输出:

  

字段Birthdate必须是日期。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

根据DateEdit documentation,您可以使用下面显示的DateEditFor将自定义修改格式设置为EditFormat.Custom

@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