2017-09-26 96 views
0

我有一个ASP.Net Core 2.0项目,我用作web api。客户端完成了Angular 4.当我将我的表单数据从角度服务发布到我的API时,服务器端的模型属性始终为空。我不确定我在这里做错了什么。我尝试过使用application/jsonapplication/x-www-form-urlencoded的各种组合。我也尝试了[FromBody][FromForm]属性,并且在这两种情况下,我的模型中的属性均为null。模型绑定在POST上失败

我是否在我的文章中做了错误的角度方面?

enter image description here

我核实,我的JSON字符串被张贴(屏幕截图所示)包含了我预期的表单数据。尽管它在服务器上到达零。

这是我的角度服务

import { Injectable, OnInit } from '@angular/core'; 
import { Http, URLSearchParams, Headers, RequestOptions, Response } from '@angular/http'; 
import 'rxjs/add/operator/toPromise'; 
import 'rxjs/add/operator/mergeMap'; 

import { CryptoData } from './cryptodata.interface'; 
import { Result } from './result.model'; 

@Injectable() 
export class EncryptService implements OnInit { 
    private options: RequestOptions; 

    constructor(private http: Http) { 
     this.options = new RequestOptions({ 
       headers: new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }) 
      }) 
    } 

    ngOnInit() { 
    } 

    encrypt(data: CryptoData): Promise<Result> { 
     let json: any = JSON.stringify(data); 

     return this.http 
     .post('/api/encrypt', json, this.options) 
     .toPromise() 
     .then(response => response.json()); 
    } 

    decrypt(data: CryptoData) { 

    } 
} 

这是我的控制器:

[Produces("application/json")] 
[AllowAnonymous] 
public class CryptoController : Controller 
{ 
    [HttpPost("~/api/Encrypt")] 
    public IActionResult Encrypt([FromForm] CryptoRequest request) 
    { 
     // Testing 
     return base.Ok(new Result(data: request.Content)); 
    } 
} 

回答

1

[FromBody]内容类型:应用程序/ JSON与工作对我非常好在asp网络核心中同样的要求。我发送的数据,从插件在Firefox:{ "key" : "1", "content" : "cont" }

enter image description here

+0

的假设是,该角的东西是错误的 - 我不知道。 –