2015-05-19 78 views
1

我指的是以下鏈接: stackoverflow.com/questions/18288675/display-datetime-value-in-dd-mm-yyyy-format-in-mvc4MVC模型接受大日期

你的模型

[Required(ErrorMessage = "Enter the Issued date.")] 
    [DataType(DataType.Date)] 
    public DateTime IssueDate { get; set; } 

剃刀頁

@Html.TextBoxFor(model => model.IssueDate) 
@Html.ValidationMessageFor(model => model.IssueDate) 

jQuery的DatePickter

$(document).ready(function() { 
    $('#IssueDate').datepicker({ 
     dateFormat: "dd/mm/yy", 
     showStatus: true, 
     showWeeks: true, 
     currentText: 'Now', 
     autoSize: true, 
     gotoCurrent: true, 
     showAnim: 'blind', 
     highlightWeek: true 
    }); 
}); 

Webconfig文件

<system.web> 
    <globalization uiCulture="en" culture="en-GB"/> 
</system.web> 

它使用日期格式DD/MM/YYYY當像2015年3月5日,但不會工作使用日期像29/5/2015時的作品。

當我們從jquery datepicker中選擇日期時,該文本框將顯示29/5/2015。只是當它回發到服務器時,模型會顯示日期爲空(我正在使用DateTime?)。它將在3/5/2015工作得很好...

任何幫助?

編輯:

我將下面添加到我的控制器。當我回發時,下面的函數將執行並顯示en-GB。然後它會進入我的其他行動,假設處理httppost,但它顯示en-US!

protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
{ 
    base.Initialize(requestContext); 
    const string culture = "en-GB"; 
    CultureInfo ci = CultureInfo.GetCultureInfo(culture); 
    Thread.CurrentThread.CurrentCulture = ci; 
    Thread.CurrentThread.CurrentUICulture = ci; 
} 
+0

出於興趣,如果嘗試5/29/2015會發生什麼? – Steve

+0

^史蒂夫,是的,它可以接受它... – user3663854

+0

然後,你有一個日期文化的問題,它試圖解析它作爲一個美國日期(月/日/年),29/5/2015失敗。你需要看看你的文化設置。 – Steve

回答

1

加我的評論作爲一個答案:

要測試,嘗試給它2015年5月29日的日期。如果解析出來,那麼你的應用程序的文化就有問題,因爲它試圖將日期解析爲2015年5月29日失敗的美式格式(mm/dd/yyyy)。

查看您的應用程序設置以查看是否在任何地方設置了en-US,或者如果您接受控制器的日期爲mm/dd/yyyy,則將其解析爲您的首選格式。

0

我將開始從改變你的剃刀語法:

@Html.TextBoxFor(model => model.IssueDate) 

@Html.EditorFor(model => model.IssueDate) 

什麼是瀏覽器的文化?這就好像應用程序正在將日期解析爲像en-US這樣的不同文化,這會因爲沒有第29個月而失敗。

我想你還需要將日期格式更改爲dd/MM/yyyy。關於MSDN有很多關於此的信息。