落后于#和&在http请求中的角度

时间:2017-09-20 12:43:16

标签: javascript angular typescript url asp.net-web-api

#和&的问题在角http.get()请求网址

请先看看我的代码。

角色服务

let versionsearch ="&";
let strweeksearch="#";

this.http.get(this.apiUrl + 'GetVersionInfo?vehicleVersion=' + versionsearch + '&structureWeek=' + strweeksearch,
            { withCredentials: true })
            .map(responce => <CoCApiResponse[]>responce.json())
            .catch(error => {
                return Observable.throw(error);
            });

Web API

  [HttpGet]
  public CoCApiResponse GetVersionInfo([FromQuery]string vehicleVersion, [FromQuery]string structureWeek)
        {
            //code
        }

解释&amp;问题:

我在Web API中有一个Get方法,它有两个字符串参数。我只是通过传递这些参数的查询字符串从angular http服务调用rest服务。但特别是如果我在查询字符串中传递值为#&,我会遇到以下问题。

使用#

如果在查询字符串中传递#,API网址将会中断。

但是我从这次讨论中得到了一些想法:Passing a pound sign as a value in the query string of a URL, using Angular

所以我这样做是为了将角色服务中的#替换为%23 strweeksearch.replace(/#/g, '%23');

使用&

API URL会将其视为3个参数,例如

apiurl versionsearch =安培;?&安培; strweeksearch = 123455

因此,Web API方法参数vehicleVersion始终为NULL

  

如何实现这一目标?我不想将每个特殊字符替换为reserved characters。我需要在http.get()中接受每个特殊角色。如何在 Angular 或Web API中处理此问题?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您要在get()中添加版本搜索,并在&#39;&amp;&#39;附加字符串。同样,这就是它认为你通过了3个参数。

this.http.get(this.apiUrl + 'GetVersionInfo?vehicleVersion=' + versionsearch + 'structureWeek=' + strweeksearch,
            { withCredentials: true })
            .map(responce => <CoCApiResponse[]>responce.json())
            .catch(error => {
                return Observable.throw(error);
            });

尝试删除一个!