c# - 如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET?

标签 c# ajax json asp.net-web-api http-get

我在 JavaScript 中有以下包含过滤器选项的复杂对象

var filter={caseIdentifiter:'GFT1',userID:'2'};

我想将其传递给 ASP.NET MVC4 WebApi Controller GET

[HttpGet]
public IEnumerable<JHS.Repository.ViewModels.CaseList> Get([FromBody]Repository.InputModels.CaseListFilter filter)
{
  try
  {
    return Case.List(filter);
  }
  catch (Exception exc)
  {
    //Handle exception here...
    return null;
  }
}

使用 jQuery ajax 调用

var request = $.ajax({
  url: http://mydomain.com/case,
  type: 'GET',
  data: JSON.stringify(filter),
  contentType: 'application/json; charset=utf-8',
  cache: false,
  dataType: 'json'
});

ASP.NET Controller 方法中的“filter”对象为“null”。如果我将其更改为 POST,则过滤器对象将正确传递。有没有办法将复杂对象传递给 GET?

我不想将 URL 的参数分开,因为会有很多参数会使其效率低下,很难有可选参数,这样即使有新参数,方法签名也会保持不变已添加。

最佳答案

找到这个 StackOverflow 问题/答案后

Complex type is getting null in a ApiController parameter

Controller 方法的 [FromBody] 属性必须是 [FromUri],因为 GET 没有主体。在此更改之后,“过滤器”复杂对象被正确传递。

关于c# - 如何从 jQuery ajax 调用将复杂对象传递给 ASP.NET WebApi GET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814160/

相关文章:

c# - 为什么代码契约将对泛型类型参数的检查标记为未经证实?

c# - 如何在 WPF 中进行 CPU 使用控制

c# - 从 aspx 页面访问代码隐藏列表

python - PySpark使用RDD和json.load解析Json

C# Emacs模式题——缩进和构建

javascript - 通过 AJAX 和 jQuery 使用 HTML5 文件上传

javascript - XHR 不适合聊天应用程序?

javascript - 使用 Ajax 自动更新 Highcharts

javascript - 在 Javascript 或 Jquery 中如何将外部 json 文件作为参数传递给函数?

ruby-on-rails - 设计不想在登录后返回 JSON