简体   繁体   English

POST 请求使用 C# API 在 Angular 上获取字符串的空值

[英]POST request getting null value of string on Angular with C# API

I am trying to call a simple request, but the value(property) in API is null.我正在尝试调用一个简单的请求,但 API 中的值(属性)为空。 Do you have any suggestions?你有什么建议吗?

C# C#

[Route("getpagefields")]
[AcceptVerbs(WebRequestMethods.Http.Post)]
public IHttpActionResult GetPageFields([FromBody]string property)
{
   USERS user = TokenUtils.Authonticate(Request);
                
   return Ok(new { fields = WebServiceBL.GetPageFields(property) });
}

.ts .ts

GetPageFields(){
  debugger;
  let urlPart = this.router.url.split('/')[3];
  let params = new HttpParams();
  params = params.set('data', urlPart);
  let test = this._httpClient.post(environment.apiBaseUrl+'users/getpagefields',params).subscribe(() => {   
 });
}

示例截图

3 Ways of submitting Data via POST-Request in Angular在 Angular 中通过 POST-Request 提交数据的 3 种方式

You can either submit your data via request-body, via query-params or via request-header.您可以通过请求正文、查询参数或请求标头提交您的数据。 I made one example for each of these possibilities:我为这些可能性中的每一种都做了一个例子:


Submitting Data via Request-Body:通过 Request-Body 提交数据:

If you want to submit data via body, you can wrap it in an object and pass it via the second parameter:如果你想通过 body 提交数据,你可以将它包装在一个对象中并通过第二个参数传递:

const myData = { id: '1', name: 'Lukas' };
this.http.post(url, myData).subscribe();

And your.Net backend-method will then expect and object that corresponds to myData :然后,您的 .Net 后端方法将期望对应于myData的对象:

[HttpPost]
public IHttpActionResult GetPageFields([FromBody]MyDataObject myObject)
{
   var id = myObject.id;
   var name = myObject.name;
}

Submitting Data via Query-Params:通过查询参数提交数据:

If you want to pass string values via HttpParams , they need to be passed as a property of third argument:如果你想通过HttpParams传递字符串值,它们需要作为第三个参数的属性传递:

const params = new HttpParams()
                    .set('id', '1')
                    .set('name', 'Lukas');

this.http.post(url, null, { params });

And the corresponding.Net backend-method might look like this:相应的 .Net 后端方法可能如下所示:

[HttpPost]
public IHttpActionResult GetPageFields([FromQuery] string id, [FromQuery] string name)
{
   var id = id;
   var name = name;
}

Submitting Data via Request-Header通过 Request-Header 提交数据

In Angular you can submit data via Http-Header like this:在 Angular 中,你可以像这样通过 Http-Header 提交数据:

const httpHeaders = new HttpHeaders()
                    .set('id', '1')
                    .set('name', 'Lukas');    

const options = { headers: httpHeaders };

this.http.post(url, null, options);

And the corresponding.Net backend-method might look like this:相应的 .Net 后端方法可能如下所示:

[HttpPost]
public IHttpActionResult GetPageFields()
{
    var id = Request.Headers.FirstOrDefault(x => x.Key == "id").Value.FirstOrDefault();
    var name = Request.Headers.FirstOrDefault(x => x.Key == "name").Value.FirstOrDefault();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM