2017-11-24 16 views
0

Asp.NET 핵심 MVC 응용 프로그램에서 HttpGet 요청에 대한 쿼리 문자열 매개 변수로 복잡한 형식을 사용할 수 있습니까? 필터 객체의 속성Asp net 핵심 쿼리 문자열 params serialization

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

모든 null 값이 :이 같은 복잡한 유형으로 PARAM을 통과 할 때

나는, 그것으로 문제가 있었다. 그러나 문자열과 같은 필터를 전달하고 대상 유형으로 deserialize하면 다음과 같이됩니다.

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

아무런 문제가 없습니다. 커스텀 시리얼 라이저를 구현하거나 asp net core app MVC를 구성하거나 올바른 결과를 얻기 위해 미들웨어를 사용해야합니다. 어쩌면 틀린 방식으로 뭐든지 했어?

답변

0

바인딩 실패로 인해 아마도 null 일 수 있습니다. 다음보십시오 :

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

또한 여러 FromQuery 속성을 가질 수 있습니다. 그러나, 당신이 얻고있는 정보의 양과 함께, 아마도이 방법을 Post로 생각하고 FromBody에 dto를 보냅니다.