У меня есть 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
, это не идеальное решение, но если я найду лучше, я дам вам знать!
культура на сервере принимает ли даты в этом формате? (если нет, вам нужно будет изменить культуру или создать пользовательский ModelBinder - это не имеет ничего общего с тем, что свойство «nullable») –
Да, у меня есть правильная культура, на другой странице я использую datepicker без времени, и это отлично работает – Carlos28
Чтобы проверить это, используйте 'DateTime.Parse (val);', чтобы увидеть, возвращает ли его действительный 'DateTime' –