2017-03-03 6 views
1

나는 내 ASP.NET 코어 컨트롤러에서 다음과 같은 방법는 ASP.NET.Core MVC 컨트롤러 방법으로 다차원 배열을 수신 할 수

public async Task<JsonResult> MyJsonResultMethod(int page,int take, int skip, IEnumerable<Sort> sort){ 

... 

public class Sort 
{ 
    public string field { get; set; } 
    public string dir { get; set; } 
} 

프런트 엔드 검도 UI 웹 그리드 내 자바 스크립트가하는 가지고 나는 내가 HTTPGet을 잡을 수 피들러에서이를 모니터링하는 경우 컨트롤러 메소드

$("#grid").kendoGrid({ 
    dataSource: { 
     type: "json", 
     transport: { 
      read: "/MyController/MyJsonResultMethod" 
     }, 
     pageSize: 5, 
     serverPaging: true, 
     serverSorting: true 
    }, 
    height: 550, 
    sortable: true, 

    pageable: { 
     refresh: true, 
     pageSizes: true, 
     buttonCount: 5 
    }, 

을 얻고 모든 값이 전달되는 참조

GET http://localhost:62594/MyController/MyJsonResultMethod?take=5&skip=0&page=1&pageSize=5&sort%5B0%5D%5Bfield%5D=DocumentNumber&sort%5B0%5D%5Bdir%5D=asc 

enter image description here 컨트롤러 메서드를 디버깅 할 때 메서드에 전달 된 모든 속성이 null로 수신 된 IEnumerable<Sort> sort을 제외한 올바른 값을 가지고 있음을 알 수 있습니다. 나는 Sort[] sort로 바꾸려고했으나 결과는 여전히 동일합니다

이것은 asp.net 코어에 고유 한 것으로 kendo가 배열을 보내는 방식입니다. 텔 레릭 (Telerik) 지원팀과 통화를 기록한 후 검도 UI 웹 그리드가 asp.net 코어를 지원하지 않는다고 말했습니다. 나는 Fiddler가 분명히 데이터를 보내는 것처럼 이것에 대한 이유를 볼 수 없습니다. 난 그냥 어떻게 든 그것을 지원하는 매개 변수를 얻을 필요가있다.

답변

0

"sort [0] [field]"가 ASP.Core 모델 바인더에 대해 올바르게 형식화되었는지 확실하지 않습니다.

이것은 배열 데이터를 컨트롤러에 전달하고 컨트롤러에 바인딩하는 방법입니다 (ASP.NET MVC에서는 코어가 아닙니다).

관련 데이터 :

sort[0].field: DocumentNumber 
sort[0].dir: asc 
sort[1].field: SecondSortField 
sort[1].dir: asc 

컨트롤러 동작 :

public async Task<JsonResult> MyJsonResultMethod(
    int page, 
    int take, 
    int skip, 
    [Bind(Prefix = "sort")]IEnumerable<Sort> sort) 

이 서식 액션 이용하여 바인드] 검도 격자받는 새로운/갱신/삭제 어레이를 전달하는 것과 동일한 방식이다 서버 그래서 나는 내 자신의 배열을 전달해야 할 때 그것을 "복사"형식으로 그것은 나를 위해 작동합니다.

+0

Bind 속성을 추가했는데 결과는 여전히 동일합니다. 내 이해에서 이것은 asp.net 코어 고유하고 그들은 검도 UI 배열을 보냅니다. – devc2

+0

아마도 ... 또한 내/검도의 방식에서 데이터는 "sort [0] .field"* not * "sort [0] [field]"로 전송됩니다. Bind 특성 외에도 점 표기법을 사용합니다. –