ASP.net核心HttpGet及其参数导致错误请求

时间:2018-11-21 03:00:47

标签: typescript api asp.net-web-api asp.net-core

所以我有一个使用Axios的服务来调用我的C#API 由于我想选择特定的数据,因此我将get方法与参数一起使用

这是我的服务

let response = await Axios.get('/api/get-report', {
        params: filter
    });

这是我在打字稿中的过滤器对象

export interface FilterModel {
  employeeId?: string;
  Month?: Date;
  from?: Date;
  to?: Date;
}

服务器上的模型

public class AttendanceReportFilterModel
{
    public string EmployeeId { set; get; }
    public DateTime? Month { set; get; }
    public DateTime? From { set; get; }
    public DateTime? To { set; get; }
}

最后,这是我的C#API

[HttpGet("get-report")]
    public async Task<IActionResult> GetReport(FilterModel filter)
    {
        var Detail = await Service.GetReport(filter);
        if (Detail == null)
        {
            return StatusCode(500, "Not Found");
        }

        return Ok(Detail);
    }

无论何时我调用我的服务,它总是返回错误请求 有人知道为什么吗?以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

尝试添加

  

[FromQuery]

public async Task<IActionResult> GetReport([FromQuery] FilterModel filter)

因此,由于您要绑定到对象,因此需要说明将它们https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-2.1#customize-model-binding-behavior-with-attributes带到哪里。

或者您也可以仅使用参数

public async Task<IActionResult> GetReport(string EmployeeId, DateTime? Month = null, DateTime? FromMonth = null, DateTime? ToMonth = null)