当前位置: 首页 > 面试题库 >

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

易弘亮
2023-03-14
问题内容

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

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

我想传递给ASP.NET MVC4 WebApi控制器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控制器方法中的“过滤器”对象为“空”。如果我将其更改为POST,则过滤器对象将正确传递。有没有办法将复杂的对象传递给GET?

我不想将参数分离到URL,因为会有许多参数使效率低下,很难拥有可选参数,并且即使添加了新参数,方法签名也保持不变。


问题答案:

找到这个StackOverflow问题/答案之后

复杂类型在ApiController参数中为null

控制器方法上的[FromBody]属性需要为[FromUri],因为GET没有主体。进行此更改后,将正确传递“过滤器”复杂对象。



 类似资料:
  • 我在JavaScript中有以下包含过滤器选项的复杂对象 我想传递给 ASP.NET MVC4 WebApi 控制器 GET 使用jQuery ajax调用 ASP。NET控制器方法为“null”。如果我将其更改为POST,则过滤器对象将正确传递。有没有方法将复杂对象传递给GET? 我不想分离出URL的参数,因为会有很多参数,这会使它效率低下,很难有可选的参数,这样即使添加了新参数,方法签名也保持

  • 我正在开发将复杂数据从window.open()传递到MVC Controller action方法参数的javascript功能。我能够通过构建查询字符串并从控制器中的[FromQuery]检索它们来实现它。 但我的问题是,我想将数据作为模型对象传递。在窗户里可以吗。打开() 下面是我的javascript代码 如您所见,我可以在URL中传递数据,但它似乎是公开的。那么,有没有办法传入var u

  • 问题内容: 我已经成功地建立了一个快速测试,以创建一个“类似REST的”服务,该服务返回序列化为JSON的对象,并且这非常容易且快速(基于本文)。 但是,虽然返回桃子一样的JSON格式的对象很容易,但我还没有看到任何处理非原语输入参数的示例。如何传递复杂的对象作为参数?我正在使用Apache CXF,但也欢迎使用其他框架(例如杰克逊)的示例:) 客户端可能类似于构建javascript对象,将其传

  • 在一个DOM操作练习中,我学习了如何使用纯JavaScript创建HTML元素。也就是像这样的东西: 我必须创建一个函数,允许用户将对象作为参数传入,以设置元素的属性。这个对象包含任意数量的键(属性)和值(属性值)。即属性可以是“src”,值可以是“image.jpg”。类似的东西。用户可以在调用函数时向此对象传递任意多的属性。 附带说明,对代码和JS都很新,请原谅我:P

  • 问题内容: 我正在使用SpringMVC,我正在将数据从Ajax传递到控制器,但是我在控制器中得到了空值,请检查下面的代码 MyControllerCode 任何人都可以帮助我 问题答案: 嘿享受下面的代码。 Javascript AJAX调用 弹簧控制器代码 以下搜索类如下 该类的优点是,将来可以根据需要向该类添加更多变量。 例如。 如果要实现排序功能。