Angular js JSON数据与DateTime的MVC模型绑定?

时间:2013-01-16 15:06:23

标签: json asp.net-mvc-3 asp.net-mvc-4 angularjs

我正在使用Angular JS以JSON的形式获取和发布数据到我的MVC 4控制器。除DateTime / DateTime外,我的所有属性都正确转换?类型。我希望有一个“设置并忘记它”处理日期的方法,以便添加的新类和/或属性不必记住进行一些特殊的转换以正确处理日期。我已经看到了以下方法和可能的缺点。人们在同一平台上使用什么方法? MVC4中是否存在正确处理此问题的内容,我可能没有配置?任何建议将不胜感激。

  1. 自定义模型绑定器。详见Phil Haack博客。可能 表现问题。
  2. 在JS方面进行一些修改。详见Robert Koritnik's blog。这似乎不适用于Angular js,也许$ http.post中有一个设置允许这个工作,但我的对象使用这种方法具有所有空值。
  3. 可以在POST操作中转换一些其他属性,例如FormattedDateTime。虽然它确实允许在客户端正确显示仍处于'/ Date(695573315098)/'格式
  4. 的日期,但这不是'设置并忘记它的方法'

    请参阅以下代码示例。 C#类:

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

    Angular JS Controller:

        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);
                });
            }
        }
    

    Fiddlers POST:

      

    HTTP / 1.1 200 OK Cache-Control:private Content-Type:application / json;   charset = utf-8服务器:Microsoft-IIS / 8.0 X-AspNetMvc-版本:4.0   X-AspNet-Version:4.0.30319 X-SourceFiles:   =?UTF-8 2 B 4 YzpcdXNlcnNcbmlja1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXFZhbGlkYXRpb25UZXN0XEhvbWVcR2V0UGVyc29uXDE =?=   X-Powered-By:ASP.NET日期:2013年1月16日星期三14:48:34 GMT   内容长度:124

         

    { “姓”: “鲍勃”, “名字”: “史密斯”, “出生日期”: “/日期(695573315098)/”, “ApprovedForSomething”: “/日期(1358261315098)/”}

    正如您在Fiddler数据中看到的那样,日期将作为JSON日期过来,但是当遇到POST方法时,DateTime属性不正确并且DateTime? property is null。

    enter image description here

1 个答案:

答案 0 :(得分:3)

您是否可以选择将您的AJAX回发切换为由WebApi的ApiController而不是MVC控制器处理?

我最近遇到了这个问题并利用了ApiController对ISO 8601日期格式的支持。

以下是一些信息: http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx