2016-09-19 2 views
0

У меня есть DATETIME сборщика в моей форме:Bootstrap datetime picker и DateTime?

<div class="input-group date" data-custom-datepicker="true"> 
<div class="input-group-addon datepicker-custom-btn"> 
    <span class="glyphicon glyphicon-calendar"></span> 
</div> 

<input type="text" class="picker" value=""> 
<input type="text" name="SelectionDeadline" class="form-control datepicker-custom valid" 
    value="" data-val="true" tooltip="DD-MM-YYYY" id="SelectionDeadline" 
    aria-describedby="SelectionDeadline-error" aria-invalid="false"> 

Формат Я хочу это:

$('#SelectionDeadline').datetimepicker({ 
    format: 'DD-MM-YYYY HH:mm' 
}); 

Моя модель имеет опору:

public DateTime? SelectionDeadline { get; set; } 

Поскольку это поле может null, поэтому, когда я отправлю форму с датой, установленной на "20-09-2016 13:07"

В модели SelectionDeadline реквизит null, но когда я пытаюсь получить значение по Request.Form:

var form = Request.Form; 
var val = form["SelectionDeadline"]; 

Допустимы "20-09-2016 13:07"

Так что мой вопрос, почему ASP не может передать это значение для DateTime? это из-за нулевой тип или "dd-MM-yyyy" формат?

@EDIT:

Итак, поясню, что я сделал на данный момент является модификация моей ViewModel:

public string selectionDeadlines { get; set; } 
private DateTime? selectionDeadlined { get; set; } 
public DateTime? SelectionDeadline 
{ 
    get 
    { 
     if (selectionDeadlined == null) 
     { 
      DateTime dt; 
      selectionDeadlined = DateTime.TryParseExact(selectionDeadlines, "dd-MM-yyyy hh:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt) ? dt : null as Nullable<DateTime>; 
     } 
     return selectionDeadlined; 
    } 
    set 
    { 
     selectionDeadlined = value; 
    } 
} 

А теперь я экономлю значение загруженное из datetime picker в виде строки selectionDeadlines, это не идеальное решение, но если я найду лучше, я дам вам знать!

+0

культура на сервере принимает ли даты в этом формате? (если нет, вам нужно будет изменить культуру или создать пользовательский ModelBinder - это не имеет ничего общего с тем, что свойство «nullable») –

+0

Да, у меня есть правильная культура, на другой странице я использую datepicker без времени, и это отлично работает – Carlos28

+0

Чтобы проверить это, используйте 'DateTime.Parse (val);', чтобы увидеть, возвращает ли его действительный 'DateTime' –

ответ

1

его из-за 'DD-MM-YYYY HH: мм' формат, использование

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

внутри модели

+0

Это не имеет никакого отношения к проблеме OP. OP использует плагин jquery, и этот атрибут применяется только при использовании 'EditorFor()' для генерации браузера datepicker - и в любом случае это неправильно, поскольку он должен быть в формате ISO для правильной привязки ('DataFormatString =" {0: yyyy -MM-yyyy} "') –

+0

Был там, сделал это, не помог – Carlos28