ASP.NET Core Angular 7 Http发布-需要复杂对象吗?

时间:2019-01-08 11:53:39

标签: c# angular asp.net-core angular-http

我正在尝试向ASP.NET Core后端进行基本的HTTP发布。

角度:

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();
}

我的参数显示为空。我可以通过创建一个复杂的对象C#端来使其正常工作,但这不是我想要的。我不需要仅用于2个参数的对象。

这里缺少什么?

2 个答案:

答案 0 :(得分:3)

您必须为请求设置适当的标头,例如

final VideoView video_frame_layout = (VideoView) findViewById(R.id.video_loader);
Log.i("PANGA", "Layout width : "+ video_frame_layout.getWidth());
Log.i("PANGA", "Layout width : "+ video_frame_layout.getHeight());

video_frame_layout.post(new Runnable()
{
    @Override
    public void run()
    {
        Log.i("TEST", "Layout width : "+ video_frame_layout.getWidth());
        Log.i("TEST", "Layout width : "+ video_frame_layout.getHeight());
    }
});

对于您的控制器端

  

我不需要仅用于2个参数的对象。

但这是在模型或c#对象中捕获所有已发布数据的好习惯。

所以我在这里创建一个示例类。

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 => {
});

答案 1 :(得分:-1)

您基本上想将您的POST 数据视为单独的参数。您可以将它们作为“参数”发送,将其转换为 querystring参数

paramsget的第二个参数和post的{​​{1}}的第三个参数的属性。

HttpClient

您想要更新API控制器,以在要绑定的参数上使用var body = null; var parms = { userRoles: ['User', 'Worker'], email: 'email@email.com' }; this.http.post('/UserRole/SaveUserRoles', body, {params: parms}) .subscribe(result => { }); 属性。

[FromQuery]