2012-11-07 78 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

我的第一個猜測是,在電話中較高的堆疊可空<日期時間>不是可空<日期時間>並因此如何產生的默認值,它是你在你的結果看到的。