2017-09-11 8 views
0

AppServiceファイルで定義されているメソッドを定義しました。メソッドのシグネチャはpublic PagedResultDto<FetchData> GetSearchData(FetchDataInput searchInput)です。私はAngularコードからこのメソッドを呼び出していますが、service-proxoes.tsファイルは、すべてのパラメータを1つずつ渡す必要があるメソッドを生成しています。ASP.NET BoilerplateでサービスAPIを呼び出すメソッドのオブジェクトを渡す方法は?

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"; 
     } 
    } 

} 

サービス-Proxies.tsファイル:

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

だから私は、以下の方法によりgetSearchDataメソッドを呼び出す必要があります。

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

だから私はすべてのパラメータを渡すために持っていますが、のは、100個のパラメータがあるとしましょうならば、それはエラーが発生しやすいとよくないプログラミングスタイルになります。だからクラスオブジェクトを取る必要があります。それで、これを行う方法はありますか?

答えて

0

あなたはこのようなものをparametter格納するオブジェクトを作成することができます

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; } 
} 

を...そしてgetSearchDataで、モデルをシリアライズし、あなたのAPIにそれを渡そうとしました:

_$SearchModelForm= _modalManager.getModal().find('form[name=SearchForm]'); 
var searchModel = _$SearchModelForm.serializeFormToObject(); 
this._dataService.getSearchData(searchModel); 
関連する問題