2016-06-14 8 views
1

Ich versuche eine HTTP-Post-Anfrage mit HTTP-Service in eckigen 2. Aber die Parameter gehen nicht auf Web-API-Aktion. Hier sind meine Komponenten und Dienstleistungen:
My-Komponente, wo Service injiziert wird (LogService)HTTP POST von Angular2 zu WebApi

import {Component, Inject} from '@angular/core'; 
    import {Http, HTTP_BINDINGS} from '@angular/http'; 
    import {Observable} from 'rxjs/Rx'; 
    import {LogService} from '../../services/canvas/logService' 
    import {PagingModel} from '../../PagingModel'; 
    @Component({ 
    selector: 'about', 
    templateUrl: 'app/components/about/about.html', 
    styleUrls: ['app/components/about/about.css'], 
    bindings: [LogService, HTTP_BINDINGS], 
    providers: [], 
    directives: [], 
    pipes: [] 
    }) 

    export class About { 
     private abc = ""; 
     constructor(@Inject(LogService) public _logService: LogService) { 
     this._logService = _logService; 
    } 

    ngOnInit() { 
    this.getAllLogs(); 

    } 
    getAllLogs() { 
    var body = { CurrentPageIndex: 1, PageSize: 10,SearchText:"JHFGHY"}; 
    let mod = new PagingModel(); 
    mod.CurrentPageIndex = 1; 
    mod.PageSize = 10; 
    mod.SearchText = "sdfs"; 
    this._logService.getAllLogs(mod).subscribe(function (data) { 

     var abc = data.json(); 
    }); 


    } 
} 

Service (LogService), von wo Daten auf dem Web-api Beitrag geschrieben wird

import { Injectable } from '@angular/core'; 
import { Http, Response, Headers, RequestOptions} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import {About} from '../../components/about/about'; 
require('rxjs/add/operator/toPromise'); 


@Injectable() 
export class LogService { 
public headers: Headers; 

constructor(private http: Http) { 
    this.http = http; 

} 
    getAllLogs(model): Observable<Response> { 

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

    return this.http.post("http://localhost:64224/api/Logs/Paging",JSON.stringify(model), options); 

    } 


} 

Und meine Web-api-Controller Aktion:

[HttpPost] 

    [Route("Paging")] 
    public ResponseMessage Paging([FromBody] PagingModel model) 
    { 
     ResponseMessage responseMessage = new ResponseMessage(); 
     List<ActivityLogModel> activityLogModelList = new List<ActivityLogModel>(); 
     activityLogModelList = logService.Paging(model); 
     responseMessage.totalRecords = activityLogModelList.Count(); 
     activityLogModelList = activityLogModelList.OrderBy(x => x.UserId).Skip((model.CurrentPageIndex - 1) * model.PageSize).Take(model.PageSize).ToList(); 
     responseMessage.data = activityLogModelList; 
     return responseMessage; 
    } 
    #endregion 

ich bin nicht in der Lage, die Parameter zu erhalten sended von LogService http post-Methode in diesen Web Api-Controller. Bitte helfen Sie mir hier draußen. Vielen Dank im Voraus

+0

Sie ein bisschen mehr über den Inhalt der gesendeten Anfrage sagen können (von dev-Tool)? Vielen Dank! –

Antwort

1

getAllLogs sollte

getAllLogs() { 
    var body = { CurrentPageIndex: 1, PageSize: 10,SearchText:"JHFGHY"}; 
    let mod = new PagingModel(); 
    mod.CurrentPageIndex = 1; 
    mod.PageSize = 10; 
    mod.SearchText = "sdfs"; 
    this._logService.getAllLogs(mod).subscribe(data => { // <<<=== use arrow function instead of `function` 
    this.abc = data.json(); // <<<=== this.abc 
    }); 
} 
+0

Er spricht über seinen Controller im C# -Webservice-Teil. – rinukkusu

+0

genau. Bitte helfen Sie mir, die Parameter an die Web-API-Aktion zu senden. Naja danke trotzdem Günter Zöchbauer –

+0

Sorry, kann hier nicht helfen. Wenn Sie meine Vorschläge korrigiert haben, kann ich meine Antwort löschen. –