有效负载显示了正确的对象,但当它到达控制器时它为空。我尝试检查它们似乎都匹配的所有属性。我应该尝试什么不同的方法?
//角度函数
getData(forwArray: number[], gac: string, sort: string, isGroupby: boolean, isFCCode: boolean): Observable<any> {
const requestData = new ClientInfoRequestModel();
requestData.forwarders = forwArray;
requestData.gac = gac;
requestData.sort = sort;
requestData.isGroupby = isGroupby;
requestData.isFCCode = isFCCode;
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
console.log('requestData=', requestData);
return this.http.post(this._ClientInfoURL, requestData ,httpOptions);
}
//c#控制器
[HttpPost]
public IActionResult GetClientInfo([FromBody] ClientInfoRequestModel requestData)
{
//requestData is null ... why? and how to fix?
}
//c# class
public class ClientInfoRequestModel
{
public int[] forwarders { get; set; }
public string gac { get; set; }
public bool isGroupby { get; set; }
public bool isFCCode { get; set; }
public string sort { get; set; }
}
//angular class
export class ClientInfoRequestModel {
public forwarders: number[] = [];
public isGroupby: boolean;
public isFCCode: boolean;
public gac: string;
public sort: string;
constructor() { }
}
你传的formArray?,不是
formarray.value
?
注意:要检查,请尝试定义您的控制器(检查后删除代码
[HttpPost]
public async Task<IActionResult> GetClientInfo()
{
var requestBody = await Request.Body.ReadAsStringAsync();
//check the value, should be a json string,
//but you can see the name of the properties
return Ok($"Request Body As String: {requestBody}");
}
我认为您对 PascalCase 和 CamelCase 变量有疑问
注 2:如果你有一个没有方法的“类”,在 Angular 中最好使用一个简单的接口
//better
export interface ClientInfoRequestModel {
public forwarders: number[] = [];
public isGroupby: boolean;
public isFCCode: boolean;
public gac: string;
public sort: string;
}
您可以使用简单的
const requestData:ClientInfoRequestModel ={
forwarders:forwArray,
gac:gac,
sort:sort,
isGroupby:isGroupby,
isFCCode:isFCCode,
}
注 3:Angular 通过缺陷将变量作为 json 发送,因此您可以删除 httpOptions
return this.http.post(this._ClientInfoURL, requestData);