2012-11-07 82 views
1

我正在使用jquery datepicker,并且也为日期字段创建了编辑器模板。我的两个代码如下所示。jQuery datepicker在所有视图中都不显示当前日期

$(document).ready(function() { 
    $('.date').datepicker({ dateFormat: "dd/mm/yy"}); 
}); 

@model Nullable<DateTime> 

@{ 
    DateTime dt = DateTime.Now; 
    if (Model != null) 
    { 
     dt = (System.DateTime) Model; 

    } 
    @Html.TextBox("", String.Format("{0:d}", dt.ToShortDateString()), new { @class = "date" }) 
} 

由于某些原因,当前日期仅在某些视图中显示。其他日期显示为01/01/0001。我已经检查并仔细检查了我的代码,并且找不到任何问题。我还通过开发人员工具检查了输出的html,它显示当前日期的字段和没有显示当前日期的字段是相同的 - 除了当然值!想知道是否有其他人遇到过这种情况。它似乎只发生在有多个日期字段的视图上。

任何帮助,将不胜感激。

+0

什么控制器/操作回到有问题的这些意见?你如何填充ViewModel? – curtisk

+0

这是我创建的动作。 – Stephen

回答

1

来到您的视图(其中一些)的日期是NOT NULL,但只是初始化new DateTime()。 那个meaas,它已经设置为01/01/0001。因此它在if语句中没有被评估为空。所以它不更改为DateTime.Now

要解决它,只需将您如果这样的代码

@{ 
    var date = Model as DateTime?; // local reference to a DateTime? 

    if (!date.HasValue      // check if it is not null 
     || date.Equals(default(DateTime))) // check if it is not default 01/01/0001 
    { 
     date = DateTime.Now; 
    } 

    @Html.TextBox("Name", String.Format("{0:d}", date.Value.ToShortDateString()), new { @class = "date" }) 
} 

这会使任何通过DateTime值是有意义。在其他情况下,将使用DateTime.Now

+0

完美地工作。非常感谢你! – Stephen

+0

只是注意到我的验证现在在日期字段上失败。对此有何想法? – Stephen

+0

请问您能获得更多信息吗?你认为它与这个问题有关吗?或新的事情发生? –

1

我的第一个猜测是,在电话中较高的堆叠可空<日期时间>不是可空<日期时间>并因此如何产生的默认值,它是你在你的结果看到的。