【问题标题】:Asp.net Web API Post List<t> Not Getting Inside MethodAsp.net Web API Post List<t> 没有进入方法
【发布时间】:2013-12-07 13:16:21
【问题描述】:

我遇到了一个问题,我似乎无法将这些数据从 jquery 正确传递到 web api。

这是我的 javascript 代码:

var chartRequestParams = [
     { QueueMode: "Investigations", DataMode: "items_completed" },
     { QueueMode: "Investigations", DataMode: "items_completed_avg_age" },
     { QueueMode: "Investigations", DataMode: "active_items" }
];

$.post('/api/dashboard/GetActiveAgeChart', chartRequestParams, function (data) {  });

这是我的 Web API 代码:

[HttpPost]
public List<HighChartsResponse> GetActiveAgeChart(List<ChartRequestParam> chartRequestParams)
{ .....continued....

上面的方法都进不去

这是我的“模型”

public class ChartRequestParam
{
  public ChartRequestParam()
  {
    this.QueueMode = string.Empty;
    this.DataMode = string.Empty;
  }

  public string QueueMode { get; set; }
  public string DataMode { get; set; }
}

我已经尝试了很多此代码的变体,但都没有成功。基本上我只是想将一个列表发布到 web API 方法。

我收到一个 500 服务器错误,如果我在“GetActiveAgeChart”方法中设置断点,它甚至不会命中它。

【问题讨论】:

  • 只是一个盲注,但是您是否尝试过将 webapi 方法参数设置为数组,而不是列表? (和/或在参数上使用[ModelBinder]
  • 两者都试过了 - 将它作为一个没有模型绑定器的数组尝试它没有命中方法,将它作为一个带有模型绑定器的数组尝试它命中方法但数组为空。
  • 带有列表的模型绑定器,也许吧? (再次,只是盲目射击)
  • 是的,我也试过了——哈哈——我试过很多变种,就是不行=(

标签: c# jquery asp.net asp.net-web-api


【解决方案1】:

首先,我假设您的控制器名为DashboardController。如果是这样,您将需要发布到 /api/dashboard,但 URI 中没有操作方法。 Web API 确实支持 RPC 样式,但这可能并不重要。

其次,您需要对有效负载进行字符串化,类似这样。

$.ajax({
    url: '/api/dashboard', type: 'POST', contentType: 'application/json',
    data: JSON.stringify(chartRequestParams)
});

这会将请求消息作为 JSON 发布。如果您希望它是 www-form-urlencoded,则需要阅读 http://aspnetwebstack.codeplex.com/workitem/177

【讨论】:

  • 嗨,Badri,你是对的,控制器是 DashboardController。我已经尝试了您的建议,但没有奏效。
  • @Loren 错误是什么?它在您的控制器的方法中实现了吗?您是否尝试过查看您的请求内容(实际发布的内容)?
  • 你试过$.post('/api/dashboard', { '': chartRequestParams }, function (data) { });吗?使用/api/dashboard,它应该在您的操作方法中。
  • 它没有进入我的控制器方法,错误是 500 错误
  • 应该是 { '': JSON.stringy(chartRequestParams) } 吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 2012-04-22
  • 2021-07-11
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2021-10-21
相关资源
最近更新 更多