Angular URLSearchParams不适用于多个参数

时间:2017-07-20 23:41:57

标签: asp.net angular asp.net-web-api

我有一个像这样的Asp.Net web api控制器:

[HttpPost]
public IHttpActionResult RepHistorie([FromUri]string vnr, [FromUri]string lagerort)
{
    ...
}

所以你可以看到有2个值。 我使用URLSearchParams发送参数。不幸的是,这不适用于多个参数。我不知道为什么,这对我来说真的很奇怪。

let params: URLSearchParams = new URLSearchParams();
params.set('vnr', this.vnr);
params.set('lagerort', this.lagerort);

var postUrl = 'http://123.456.7.89:12345/api/lager';

let requestOptions = new RequestOptions();
requestOptions.search = params;

this.http.post(postUrl, requestOptions)
  .subscribe(data => {
    // success

  }, error => {
    // error
});

在我的另一个控制器中,只有一个参数,它完美无缺。有人知道为什么吗?

我也尝试过:

params.append('vnr', this.vnr);
params.append('lagerort', this.lagerort);

修改

它的工作方式如此(虽然不是一种干净的方式):

var postUrl = 'http://123.456.7.89:12345/api/lager?vnr=' + this.vnr + '&lagerort=' + this.lagerort;
var postObject = {};

2 个答案:

答案 0 :(得分:10)

在注意到我没有导入它之前,我遇到了同样的问题, 您必须在使用之前导入URLSearchParams

import {URLSearchParams} from '@angular/http';

享受编码!

答案 1 :(得分:0)

以下

对我有用
    let params: URLSearchParams = new URLSearchParams();
    params.set('vnr', this.vnr);
    params.set('lagerort', this.lagerort);
    let requestOptions = new RequestOptions();
    requestOptions.params = params; // instead of requestOptions.search = params