簡體   English   中英

ASP.NET Core Angular 7 Http Post - 需要復雜對象嗎?

[英]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和第三個參數為postHttpClient

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM