Bootstrap日期时间选择器和DateTime?

时间:2016-09-19 11:38:56

标签: c# asp.net-mvc twitter-bootstrap 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"];

val是"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,这不是完美的解决方案,但如果我能找到更好的信息,我会告诉您!

1 个答案:

答案 0 :(得分:1)

因为'DD-MM-YYYY HH:mm'格式,  使用

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

内部模型