2015-03-31 3 views
-1

У меня есть kendo datetimepicker в редакторе всплывающих окон кендо. я описывать поле в модели с форматом:Kendo DateTimePicker меняет формат после отправки

[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy HH:mm:ss}", ApplyFormatInEditMode = true)] 

public DateTime Date { get; set; } 

И EditorTemplate

@Html.Kendo().DateTimePickerFor(model => model.Date).Value(DateTime.Now).Format("dd.MM.yyyy HH:mm") 

У меня также есть DateTimeBinder

public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var displayFormat = bindingContext.ModelMetadata.DisplayFormatString; 
     var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);    

     if (!string.IsNullOrEmpty(displayFormat) && value != null && !String.IsNullOrWhiteSpace(value.AttemptedValue)) 
     { 
      DateTime date; 
      displayFormat = displayFormat.Replace("{0:", string.Empty).Replace("}", string.Empty); 

      if (DateTime.TryParseExact(value.AttemptedValue, displayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) 
      { 
       return date; 
      } 
      else 
      { 
       bindingContext.ModelState.AddModelError(bindingContext.ModelName, string.Format("{0} Incorrect Format", value.AttemptedValue)); 
      } 
     } 

     return base.BindModel(controllerContext, bindingContext); 
    } 

проблема, когда я сохраню это всплывающее окно и достигает модели в сторона сервера контроллера - это формат dd.MM.yyyy H: mm: ss not dd.MM.yyyy HH: mm: ss. например, если я сохраню с этого времени 31.03.2015 08:56, после отправки на сервер он станет 31.03.2015 8:56. У вас был такой случай?

ответ

0

Вы можете использовать этот подход ниже, который работает без проблем.

Модель:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
[Display(Name = "Start Date")] 
public DateTime? StartDate{ get; set; } 

Вид:

@Html.LabelFor(m => m.StartDate) 
@(Html.Kendo().DatePickerFor(m => m.StartDate) 
    .Animation(true) 
    .Culture("tr-TR") //Set culture 
    .Footer(false) 
    .Format("dd.MM.yyyy") 
    .Min(new DateTime(1900, 1, 1)) //Set min date of the datepicker 
    .Max(new DateTime(2099, 12, 31)) //Set min date of the datepicker 
    //.Value(DateTime.Today) //Set the value of the datepicker 
    //.HtmlAttributes(new { @class = "k-datepicker" }) 
) 

Я думаю, вам не нужно "DateTimeBinder". Надеюсь, это поможет ...