2017-09-26 98 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

的假設是,該角的東西是錯誤的 - 我不知道。 –