相关疑难解决方法(0)

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

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

var filter={caseIdentifiter:'GFT1',userID:'2'};
Run Code Online (Sandbox Code Playgroud)

我想传递给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;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用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'
});
Run Code Online (Sandbox Code Playgroud)

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

我不想将参数分离到URL,因为会有一些参数会使它效率低下,很难有可选参数,这样即使添加了新参数,方法签名也保持不变.

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

35
推荐指数
1
解决办法
10万
查看次数

更改参数名称Web Api模型绑定

我正在使用Web API模型绑定来解析URL中的查询参数.例如,这是一个模型类:

public class QueryParameters
{
    [Required]
    public string Cap { get; set; }

    [Required]
    public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时,这很好用/api/values/5?cap=somecap&id=1.

有什么方法可以更改模型类中属性的名称,但保持查询参数名称相同 - 例如:

public class QueryParameters
{
    [Required]
    public string Capability { get; set; }

    [Required]
    public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我认为添加[Display(Name="cap")]到该Capability属性将起作用,但事实并非如此.我应该使用某种类型的数据注释吗?

控制器将有一个如下所示的方法:

public IHttpActionResult GetValue([FromUri]QueryParameters param)    
{
    // Do Something with param.Cap and param.id
}
Run Code Online (Sandbox Code Playgroud)

c# model-binding asp.net-web-api

14
推荐指数
2
解决办法
1万
查看次数

如何通过复杂的对象发出GET请求?

我尝试GET通过WebApi与复杂对象进行请求。请求是这样的:

[HttpGet("{param1}/{param2}")]
public async Task<IActionResult> GetRequest(string param1, int param2, [FromBody] CustomObject[] obj)
{
    throw new NotImplementException();
}
Run Code Online (Sandbox Code Playgroud)

哪里CustomObject是:

[DataContract]
public class CustomeObject
{        
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何撰写有效的GET请求?

c# asp.net-core asp.net-core-webapi

1
推荐指数
1
解决办法
4176
查看次数