2017-11-24 10 views
0

Asp.NET Core MVCアプリケーションでHttpGetリクエストのクエリ文字列パラメータとして複合型を使用できますか?Asp netコアクエリ文字列params serialization

私はこのように、複合型としてのparamを渡すしようとすると、私は、それで問題があった:

[Route("reportData")] 
[HttpGet] 
public List<dynamic> GetReportData(int reportId, int scope [FromQuery] ReportFilterMetadataDto filters) 
{ 
    ...     
} 

フィルタオブジェクトのプロパティのすべてがnull値を持ちます。しかし、もし私が文字列のようなフィルタを渡して、次のように宛先タイプに逆直列化すると:

[Route("reportData")] 
[HttpGet] 
public List<dynamic> GetReportData(int reportId, int, string filters) 
{ 
    var result = JsonConvert.DeserializeObject<ReportFilterMetadataDto>(filters); 
} 

問題はありません。カスタムシリアライザを実装するか、asp net core app MVCを設定するか、ミドルウェアを使用して正しい結果を得る必要がありますか?たぶん間違ったやり方で何かをやったのだろうか?

答えて

0

バインディングに失敗した可能性があります。 次を試してください:

[HttpGet("reportData/{reportId}/{scope}")] 
    public List<dynamic> GetReportData(int reportId, int scope [FromQuery] 
     ReportFilterMetadataDto filters) 
    { 
     ...     
    } 

複数のFromQuery属性を使用することもできます。しかし、あなたが得ている情報の量で、おそらくこのメソッドをPostとみなし、FromBodyを取得してください。

関連する問題