2017-02-16 5 views
0

Ich mache einen Beitrag zu einem API und aus welchem ​​Grund auch immer ich einen Nullwert bekomme Ich benutze Angular2, um den api-Dienst zu nennen, im [FromBody] und nicht sicher warum. Ich habe folgendeFromBody ist null

Komponente

fileInfo: IFile;//this is an interface 
this.fileInfo = { 
    FileID:1000, 
    LinkTabID: 1, 
    FileName: 'Test', 
    FileDisplayName: 'test', 
    IsActive: true, 
    CreatedBy: 'mike', 
    UpdatedBy:'mike' 
} 

this._tabService.AddFile(this.fileInfo) 
    .subscribe(
     data => { 
      this.tabControls = data; 
     }, 
     error => this.errorMessage = <any>error); 

Dienst

AddFile(fileInfo: IFile){ 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this._http.post(this._fileUploadAPI + 'InsertFile' , { fileInfo }, options) 
     .map((response: Response) => response.json()) 
     .catch(this.handleError); 
} 

in meinem Fiedler sehe ich die Rohdaten enter image description here

WebAPI

public HttpResponseMessage InsertFile([FromBody] FileModel value) 
{ 
    try 
    { 
     // sp_GetFileResult fileEntry = _modelFactory.Parse(value); 

     if (fileEntry == null) 
      return Request.CreateResponse(HttpStatusCode.BadRequest, "Could not read file entry in the body"); 
     else 
     { 
      some logic 
     } 
    } 
    catch (Exception ex) 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex); 
    } 
} 

*********** AUCH VERSUCHT ************************************ *****

AddFile(fileInfo: IFile){ 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this._http.post(this._fileUploadAPI + 'InsertFile', { value: fileInfo }, options) 
     .map((response: Response) => response.json()) 
     .catch(this.handleError); 
} 

jason enter image description here

bekam den gleichen Fehler

FileModel

public class FileModel 
    { 

    public int FileID { get; set; } 
    public int LinkTabID { get; set; } 
    public string FileName { get; set; } 
    public string FileDisplayName { get; set; } 
    public bool IsActive { get; set; } 
    public string CreatedBy { get; set; } 
    public string UpdatedBy { get; set; } 

    } 
+1

was ist die Struktur der FileModel? – pixelbits

+0

Ich vermute, dass die verschachtelten inneren Objekte von "Wert" und "fileInfo" hervorheben, dass es nur eine einzige Schnittstelle ist, versuchen Sie, diese inneren Objekte zu entfernen und nur die Eigenschaften direkt zu veröffentlichen. – Mig

+0

entfernte die inneren Objekte und bekam immer noch das, gleiche Ergebnis – rgoal

Antwort

0

Verstanden, musste nur "Ergebnis" zu meinen jason hinzufügen

AddFile(fileInfo: IFile){ 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this._http.post(this._fileUploadAPI + 'InsertFile', { result: fileInfo }, options) 
     .map((response: Response) => response.json()) 
     .catch(this.handleError); 
} 

statt

AddFile(fileInfo: IFile){ 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this._http.post(this._fileUploadAPI + 'InsertFile', { value: fileInfo }, options) 
     .map((response: Response) => response.json()) 
     .catch(this.handleError); 
} 
Verwandte Themen