2012-03-13 60 views
0

我有一個使用實體框架的MVC 3項目。我可以成功地更新實體是這樣的:具有日期時間屬性的MVC 3更新實體

[HttpPost] 
publiv RedirectResult Update(MyEntity entity) 
{ 
    if(ModelState.IsValid) 
    { 
     this.entityRepository.Update(entity); 
     return RedirectResult(".../Admin"); 
    } 
    return RedirectResult(".../UnssuccessfullOperation"); 
} 

現在的問題時,我說的DateTime屬性,以我的實體arised。如果我不爲我的DateTime屬性添加@ Html.HiddenFor,那麼我的實體的日期是01.01.0001(或DateTime.Min),這顯然不能保存到數據庫中。如果我添加隱藏的輸入日期呈現,但在更新我的模型狀態是無效的,我想這是由於日期時間作爲字符串傳遞的事實。

現在有一個解決方案,但它似乎有點怪 - 在視圖中不呈現Html.Hidden和使用datetime從entityRepository這樣的:

entity.DateSomething = this.entityRepository.GetSingle(entity.ID).DateSomething; 

,但它似乎並不十分正確。在這種情況下還有其他更好的選擇嗎?

回答

1

如果我添加了隱藏的輸入日期呈現,但是,更新我的 的ModelState是無效的,我想這是由於該 日期時間作爲字符串傳遞的事實。

不,我懷疑這是由於應用程序中的文化設置和隱藏字段中使用的日期時間格式造成的。他們可能不匹配。

查看following blog post,其中涵蓋了解析日期時出現的不同問題以及格式取決於您是在執行GET還是POST請求,還有可能編寫自定義模型聯編程序以使用固定日期格式。

+0

不可思議的。我認爲這可能是問題所在,但由於溝通是在同一臺計算機上執行的,我認爲「這是完全不可能的」,因爲我無法想象如何使用一種文化發送數據,然後使用不同的文化接收數據。萬分感謝。 – Unknown 2012-03-13 13:17:49