asp.net-mvc - Angular2 Http 发布请求未绑定(bind)到 ASP.NET 5 Controller 的操作

标签 asp.net-mvc asp.net-core angular

我正在启动从 Angular2 到 ASP.NET 5 Controller 操作的发布请求。 Angular 正在正确发布数据并命中 Controller 操作,但它没有映射到 Controller 操作中定义的参数,参数为 null。同时通过 Request 检查对象 Request.Form 具有正确的文本数据但未绑定(bind)到模型。

Angular

let body = JSON.stringify({ firstName: 'Ali' });
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });

this.http.post(this.url, body, { headers: headers })
            .subscribe(
                (data) => {
                    console.log('Response received');
                    console.log(data);
                },
                (err) => { console.log('Error'); },
                () => console.log('Authentication Complete')
            );

ASP.NET

[HttpPost]
public IActionResult DemoAction(string firstName)
{
      var req = Request;

      return null;
}

Request.Form 的数据格式如 {\"firstName\":\"Ali\"} 但参数 firstNamenull

最佳答案

您尝试使用内容类型 url 编码形式发送 JSON 内容(使用 JSON.stringify 方法创建)。

您应该尝试使用 application/json 之一:

let body = JSON.stringify({ firstName: 'Ali' });
let headers = new Headers({ 'Content-Type': 'application/json' });

this.http.post(this.url, body, { headers: headers })

编辑

如果您想提供表单内容,您可以利用 URLSearchParams 类:

var params = new URLSearchParams();
params.set('firstName', 'Ali');
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });

this.http.post(this.url, params.toString(), { headers: headers })

关于asp.net-mvc - Angular2 Http 发布请求未绑定(bind)到 ASP.NET 5 Controller 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432527/

相关文章:

angular - 如何在 angular2 中启用单击 svg 行

angular - 在 StackBlitz 中设置项目名称

asp.net-mvc - 数据类型客户端验证在 MVC 2 中不起作用

c# - 在使用 asp.net 尝试登录 5 次失败后,如何将用户帐户锁定 30 分钟?

jquery - 使用 Html.BeginForm 内的启动按钮加载带有部分 View 的 jQuery 对话框

c# - 如何使用 EF 为 ASP.NET Core 定义索引?

asp.net-mvc - 正确设置 IIS Express SSL 证书以开发 .net 核心 mvc 应用程序

.net - 并行运行 ASP.Net MVC 2 和 MVC 4 的要求

c# - 添加范围 : How to call the right constructor function?

javascript - ngOnInit 和构造函数谁先运行