2016-04-27 11 views
1

私はオブジェクトをAngular2から投稿を通してMVCコントローラに渡そうとしています。私は実際のオブジェクトを渡すことができることを期待していましたが、私のコントローラに入ると、すべてのプロパティがnullとして表示されます。オブジェクト全体を渡すことは可能ですか?私は "UrlSearchParameters"でも試しましたが、どちらもうまくいきませんでした。Angular2のオブジェクトをMVC5投稿に渡すことはできますか?

import {Injectable} from 'angular2/core'; 
 
import {Client} from './client'; 
 
import {RequestOptions, Http, Response, Headers, URLSearchParams} from 'angular2/http'; 
 
import {Observable}  from 'rxjs/Observable'; 
 

 

 
@Injectable() 
 
export class ClientService { 
 
    constructor(private http: Http) { } 
 

 

 
    getClients(): Observable<Client[]> { 
 
     return this.http.get('/Client/GetClients') 
 
      .map(this.extractData); 
 
    } 
 

 
    addClient(client: Client): Observable<Client> { 
 
     let clientUrl = '/Client/AddClient'; 
 
     let body = JSON.stringify({ client }); 
 
     let header = new Headers({ 'Content-Type': 'application/json' }); 
 
     let options = new RequestOptions({ headers: header }); 
 

 
     return this.http.post(clientUrl, body, options) 
 
      .map(this.extractData) 
 
      .catch(this.handleError); 
 
    } 
 

 
    private extractData(res: Response) { 
 
     if (res.status < 200 || res.status >= 300) { 
 
      throw new Error('Bad response status: ' + res.status); 
 
     } 
 
     let body = res.json(); 
 
     return body || {}; 
 
    } 
 
    private handleError(error: any) { 
 
     // In a real world app, we might send the error to remote logging infrastructure 
 
     let errMsg = error.message || 'Server error'; 
 
     console.error(errMsg); // log to console instead 
 
     return Observable.throw(errMsg); 
 
    } 
 
}

export interface Client { 
 
    name: string; 
 
    npi: number; 
 
    dateAdded?: string; 
 
    id?: number 
 
}

はここに私のAngular2サービスです:

[HttpPost] 
    public JsonResult AddClient(Models.Client client) 
    {    
     var cli = new Models.Client(); 
     cli.name = client.name; 
     cli.npi = client.npi; 
     cli.dateAdded = DateTime.Now.ToShortDateString(); 
     return Json(cli); 
    } 

はここに私のクライアントのタイプです:

は、ここに私のコントローラのポスト機能です210

ありがとうございました!あなたは、次の試してください

答えて

2

{ 
    "client": { 
    // client properties 
    "name": "some name", 
    "npi": "some npi", 
    (...) 
    } 
} 

代わりの

addClient(client: Client): Observable<Client> { 
    let clientUrl = '/Client/AddClient'; 
    let body = JSON.stringify(client); // <---------- 

の代わりに、あなたの場合は

addClient(client: Client): Observable<Client> { 
    let clientUrl = '/Client/AddClient'; 
    let body = JSON.stringify({ client }); 

を、私はあなたが以下のコンテンツを受信することを考えます

{ 
    // client properties 
    "name": "some name", 
    "npi": "some npi", 
    (...) 
} 
関連する問題