2016-09-29 3 views
0

У меня есть эта модель:DateEdit не работает с форматом дат

[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 везде. Else, выход валидатора:

Поле Дата рождения должно быть датой.

Как исправить эту проблему?

+1

Проблема связана с 'jquery.validate.js', который проверяет даты, основанные на формате 'MM/dd/yyyy' (см. [этот ответ] (http://stackoverflow.co m/questions/39677035/date-of-birth-validation-keep-show/39682410 # 39682410) для объяснения). Я не знаком, но я полагаю, что 'DateEditFor()' имеет метод для синтаксического анализа даты, чтобы вы могли использовать решение, подобное [этому ответу] (http://stackoverflow.com/questions/27285458/jquery-ui -datepicker-and-mvc-view-model-type-datetime/27286969 # 27286969) –

+0

Конечно, у него есть. Но я не знал, как установить его для DX DateEdit. –

+0

И спасибо за объяснение, я не знал о 'validate'. –

ответ

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.js и jquery.validate.unobtrusive.min.js к загружаться на странице макета или странице просмотра. Следовательно, вы можете использовать встроенную проверку или удаленную проверку для проверки формата даты относительно свойства EditFormatString (см. Ссылки ниже).

ссылки Validation:

Built-in Validation

Remote Validation

проблема, связанная с подобным форматом даты:

DateEdit - Bind to a nullable property