【问题标题】:Passing Date in AngularJS $http get to ASP.NET Web Api在 AngularJS $http 中传递日期到 ASP.NET Web Api
【发布时间】:2014-04-04 15:26:40
【问题描述】:

将 js Date 对象传递给我的 ASP.NET Web Api 控制器时,我总是得到 null。我尝试过传递字符串、字符串数组、时间跨度——所有这些都有效,日期除外。检查请求时,日期是这样传递的:

date:"2014-03-13T15:00:00.000Z"

角度:

$http({ 
    method: 'get', 
    url: 'api/stuff', 
    params: {
       date: new Date()
    }
);

在我的 ApiController 中:

public IEnumerable<StuffResponse> Get(
    [FromUri] DateTime? date
){ ... }

传递日期的正确方法是什么?

【问题讨论】:

    标签: c# javascript asp.net angularjs asp.net-web-api


    【解决方案1】:

    这对我有用:

    $http({ 
        method: 'get', 
        url: 'api/stuff', 
        params: {
           date: $filter('date')(new Date(), "yyyy-MM-dd HH:mm:ss")
        }
    );
    

    【讨论】:

      【解决方案2】:

      您的 Javascript 中日期的格式与 .NET DateTime 解析不兼容。请参阅此处了解有效格式。

      http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx

      【讨论】:

      • 要么使用 @Rondles 所说的不同格式,要么将其作为字符串接收并使用 DateTime.Parse 解析它
      • 当通过 postdata 发送 js 日期时,.NET 设法创建一个 DateTime - 所以我猜它在使用 get 和 params 时也会起作用..
      • 日期格式 ("2014-03-13T15:00:00.000Z") 与 $http 发布数据和获取参数完全相同,但 ApiController 无法识别字符串作为获取参数的日期时间。
      • 我建议您尝试使用 SnareHangers 方法,并在发送之前将其转换为 .NET 可识别的格式。如果它仍然不起作用,那么你有一个不同的问题。如果它确实有效,则当前格式与此类 AJAX 请求相结合会导致问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      相关资源
      最近更新 更多