2013-01-16 49 views
8

我正在使用Angular JS以JSON的形式獲取數據並將其發佈到我的MVC 4控制器。除了DateTime/DateTime之外,我的所有屬性都可以正確轉換嗎?類型。我希望有一個「設置並忘記它」的方法來處理日期,以便添加的新類和/或屬性不必記住進行一些特殊的轉換來正確處理日期。我看到了以下方法和可能的缺點。人們在同一個平臺上使用什麼方法? MVC4中是否有一些正確處理這個問題,我可能沒有配置?任何建議將不勝感激。使用MVC模型綁定DateTime的角度js JSON數據?

  1. 自定義模型聯編程序。詳見博客。可能的 性能問題。
  2. 在JS端進行一些修改。詳見Robert Koritnik's blog。這似乎不適用於Angular js,也許在$ http.post中有一個設置可以讓這個工作,但是我的對象有這個方法的所有空值。
  3. 有一些額外的屬性,例如可以在POST操作中轉換的FormattedDateTime。這不是一個'設置它,忘記它的方法',雖然它確實允許在客戶端仍然在'/ Date(695573315098)/'格式

請看下面的代碼例。 C#類:

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime BirthDate { get; set; } 
    public DateTime? ApprovedForSomething { get; set; } 
} 

角JS控制器:

function PersonController($scope, $http) { 
     $scope.getPerson = function() { 
      $http.get('../../Home/GetPerson/1').success(function (data) { 
       $scope.Person = data; 
      }); 
     } 
     $scope.updateApprovedForSomething = function() { 
      $http.post('../../Home/UpdatePerson', { person: $scope.Person }).success(function (data) { 
       console.log(data); 
      }); 
     } 
    } 

菲德勒斯POST:

HTTP/1.1 200 OK緩存控制:私人內容類型:應用/ JSON; 的charset = UTF-8服務器:Microsoft-IIS/8.0 X-AspNetMvc-版本:4.0 X-ASPNET-版本:4.0.30319 X-SourceFiles:???? = UTF-的8B YzpcdXNlcnNcbmlja1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXFZhbGlkYXRpb25UZXN0XEhvbWVcR2V0UGVyc29uXDE = = X- Powered by By:ASP.NET Date:Wed,16 Jan 2013 14:48:34 GMT Content-Length:124

{「FirstName」:「Bob」,「LastName」:「Smith」,「BirthDate」 :「/日期(695573315098)/」,「ApprovedForSomething」:「/日期(1358261315098)/」}

正如你可以與小提琴手數據的日期快到了作爲一個JSON日期見,但擊中時張貼我那麼DateTime屬性是不正確的,並且DateTime?屬性爲null。

enter image description here

+5

我會菲爾哈克的解決方案去。 JSON日期在離開服務器時應該採用JavaScript可讀的格式。完全是JavaScript Object Notation。 –

+2

哈克+1。使用JSON。.NET將解決日期時間問題以及愚蠢的.NET字典序列化格式。 –

回答