【发布时间】:2019-10-10 20:35:44
【问题描述】:
我在 typeScript 文件中有方法:
searchUsers() {
this.filterParams = [
{ parameterName: 'FirstName', filterOperator: 'Like', parameterValue: this.firstName },
{ parameterName: 'LastName', filterOperator: 'Like', parameterValue: this.lastName },
{ parameterName: 'UserName', filterOperator: 'Like', parameterValue: this.userName },
{ parameterName: 'Email', filterOperator: 'Like', parameterValue: this.email }
];
this.service.getUsers(this.id, this.filterParams);
}
调用服务方法:
getUsers(id, filterParams) {
let params = new HttpParams()
.set('id', id);
.set('filterParams', filterParams);
this.http.get(this.rootURL + '/user/getUsers', { params: params })
.subscribe((res: any) => {
this.users = res.users;
};
});
}
Web api核心中的FilterParameter模型是:
public class FilterParameter
{
public string ParameterName;
public FilterOperator FilterOperator;
public string ParameterValue;
}
单击 Angular 中的搜索按钮后,我的 web api 核心方法正在触发。这是我在 web api 核心中的方法:
[Route("getUsers/{id?}/{filterParams?}")]
[HttpGet]
public ActionResult GetUsers(int id, [FromQuery] List<FilterParameter> filterParams)
{
try
{
_logger.LogInformation("Geting all users from the database");
var users = _baseBL.GetUsers(id, filterModel);
return Ok(new { users = users.Results, usersCount = users.RowCount});
}
catch (Exception ex)
{
_logger.LogError($"Something went wrong: {ex}");
return StatusCode(500, "Internal server error");
}
}
Id 很好,但问题是我的 filterParams 是空列表。知道为什么吗?
【问题讨论】:
-
您是否尝试使用 POSTMAN(或类似方法)向 API 发送此类请求并查看参数是否正常?我问是因为第一件事是确定问题出在哪里(后端或前端)。如果后端合同在 Angular 中定义明确,您只需格式化请求以履行该合同。
-
@lealceldeiro 我不确定我是否知道如何使用邮递员发送 filterParams ......我之前做过,它仍然是空列表,但我在发送参数时可能是错误的。我现在将搜索如何正确发送参数,然后我会回来......
标签: c# angular asp.net-core-webapi angular8