2017-09-11 2 views
0

J'ai défini une méthode définie dans le fichier AppService, la signature de la méthode est public PagedResultDto<FetchData> GetSearchData(FetchDataInput searchInput). J'appelle cette méthode de code angulaire, mais le fichier service-proxoes.ts a généré une méthode dans laquelle j'ai besoin de passer tous les paramètres un par un.Comment passer l'objet dans la méthode pour appeler l'API de service dans ASP.NET Boilerplate?

public class FetchDataInput: PagedAndSortedInputDto, IShouldNormalize 
{ 
    public int DataLevel { get; set; } 
    public int DataType { get; set; } 
    public string DataCode { get; set; } 
    public string DescLong { get; set; } 
    public string LanguageCode { get; set; } 
    public string DataParent { get; set; } 

    public void Normalize() 
    { 
     if (string.IsNullOrEmpty(Sorting)) 
     { 
      Sorting = "DataCode"; 
     } 
    } 

} 

fichier Service-Proxies.ts:

getSearchData(dataLevel: number, dataType: number, dataCode: string, descLong: string, languageCode: string, dataParent: string, sorting: string, maxResultCount: number, skipCount: number): Observable<PagedResultDtoOfFetchData> { 

donc je dois appeler la méthode getSearchData par la manière suivante.

this._dataService.getSearchData(AppConsts.dataLevelType, undefined, undefined, 
     undefined, this.currentLanguage.name, undefined, undefined, undefined, undefined).subscribe((result) => { 
      //result.items; 
     }); 

Je dois donc passer tous les paramètres, mais si disons il y a 100 paramètres, il sera sujet aux erreurs et pas bon style de programmation. Il faut donc prendre un objet de classe c'est tout. Alors, y a-t-il un moyen de faire cela?

Répondre

0

Vous pouvez créer un objet pour stocker les parametter comme ceci:

public class FetchDataInput: PagedAndSortedInputDto, IShouldNormalize 
{ 
    public SearchModel searchModel{get; set;} 

    public void Normalize() 
    {   
     if (string.IsNullOrEmpty(Sorting)) 
     { 
      Sorting = "DataCode"; 
     } 
    } 

} 

public class SearchModel 
{ 
     public int DataLevel { get; set; } 
     public int DataType { get; set; } 
     public string DataCode { get; set; } 
     public string DescLong { get; set; } 
     public string LanguageCode { get; set; } 
     public string DataParent { get; set; } 
} 

... Et dans le getSearchData, a tenté de sérialiser le modèle et le transmettre à votre api:

_$SearchModelForm= _modalManager.getModal().find('form[name=SearchForm]'); 
var searchModel = _$SearchModelForm.serializeFormToObject(); 
this._dataService.getSearchData(searchModel);