为什么从 Angular 发送到我的 .net 控制器的对象在到达控制器后为空?以及如何修复它?

问题描述 投票:0回答:1

有效负载显示了正确的对象,但当它到达控制器时它为空。我尝试检查它们似乎都匹配的所有属性。我应该尝试什么不同的方法?

//角度函数


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() { }
}
.net angular controller null
1个回答
0
投票

你传的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);
© www.soinside.com 2019 - 2024. All rights reserved.