我的C#post方法外观
[HttpPost]
public void mymethod(string id) {...}
我试图像这样从角度http.post
发布字符串值,但该值到达null的C#方法。
const mystr = 'mystring';
this.http.post('myurl', mystr);
我尝试过的
{id: mystr}
JSON.stringify({id: mystr})
注意:使用[HttpGet("{id}")]
发送id值效果很好,但是mystr可能包含'/'值,因此只要包含'/'都会失败。
当我将我的方法签名替换为([FromBody] string id)
时,我得到400 Bad Request
。
答案 0 :(得分:0)
对于您的情况,您需要进行一些小的更改,只需提供Model
请求中要接收的POST
数据即可。
像:-
public class CustomData {
string id {get; set;}
}
然后调整您的API
并使其意识到必须从request's body
接收一些信息
所以,而不是
[HttpPost]
public void mymethod(string id) {...}
使用此
[HttpPost]
public void mymethod([FromBody] CustomData data) {...}
答案 1 :(得分:0)
您可以尝试按以下方式更改从angular发送的方式
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post('myurl', 'string value', { headers: headers }) ;
如果“ applicaiton / json”不起作用,请尝试将其更改为“ application / x-www-form-urlencoded”
答案 2 :(得分:0)
在对角度的mystr上使用encodeValue。在C#API ID中,您应该获得解码后的值。