[英]ASP.NET Core Angular 7 Http Post - Requires Complex Object?
我正在嘗試將一個基本的HTTP Post發布到ASP.NET Core后端。
角度:
var parms = {
userRoles: ['User', 'Worker'],
email: 'email@email.com'
};
this.http.post('/UserRole/SaveUserRoles', parms)
.subscribe(result => { });
控制器:
[HttpPost]
public async Task<IActionResult> SaveUserRoles([FromBody]string[] userRoles, string email)
{
return Ok();
}
我的參數顯示為null。 我可以通過創建一個復雜的對象C#端來實現這個功能,但這不是我想要做的。 我不需要只有2個參數的對象。
這里缺少什么?
您必須為您的請求設置正確的標題,例如
var postData = {
userRoles: ['User', 'Worker'],
email: 'email@email.com'
};
const headers: HttpHeaders = new HttpHeaders();
headers.set('Content-Type', 'application/x-www-form-urlencoded');
this.http.post('/UserRole/SaveUserRoles', postData, { headers: headers })
.subscribe(result => {
});
對於你的控制器方面,
我不需要只有2個參數的對象。
但是,在模型或c#對象中捕獲所有發布的數據是一種很好的做法。
所以在這里我創建了一個示例類。
class PostData
{
public string[] userRoles { get; set; }
public string email { get; set; }
}
[HttpPost]
public async Task<IActionResult> SaveUserRoles([FromBody]PostData postData)
{
return Ok();
}
您基本上想要將POST數據視為單獨的參數。 您可以將它們作為“params”發送,它將轉換為查詢字符串參數 。
params
是對第二個參數的屬性get
和第三個參數為post
上HttpClient
。
var body = null;
var parms = {
userRoles: ['User', 'Worker'],
email: 'email@email.com'
};
this.http.post('/UserRole/SaveUserRoles', body, {params: parms})
.subscribe(result => {
});
您需要更新API控制器以使用要綁定的參數的[FromQuery]
屬性。
[HttpPost]
public async Task<IActionResult> SaveUserRoles([FromQuery]string email, [FromQuery]string[] userRoles)
{
return Ok();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.