2012-10-29 3 views
3

Infragistics 그리드를 사용하여 데이터베이스의 항목 목록을 표시하려고합니다. Razor 엔진을 사용하는 MVC 응용 프로그램에서 Entity Framework와 함께 코드 우선 메서드를 사용하고 있습니다. Infragistics 그리드를 제외하고는 모든 것이 잘 동작합니다. 여기 Infragistics 그리드의 빈 응답이 반환 됨

@using Infragistics.Web.Mvc 
@model IEnumerable<BusinessModel.Models.TestPlan> 

@{ 
    ViewBag.Title = "Home"; 
} 

@(Html.Infragistics().Grid<BusinessModel.Models.TestPlan>(Model) 
.AutoGenerateColumns(true) 
.DataSourceUrl(Url.Action("igListTestPlan")) 
.DataBind() 
.Render()) 

내 컨트롤러 : 여기

내 집이다 내가 요청이 "200 OK"상태 코드와 함께 전송되는 것을 볼 수 있지만, 명확하게 할 수 있습니다 불을 지르고 사용

[GridDataSourceAction] 
public ActionResult igListTestPlan() 
{ 
    return View(service.getListTestPlan()); 
} 

응답 탭은 비어 있습니다. 또한 콘솔 (infragistics.js)에서 오류가 발생합니다.

Uncaught TypeError: Cannot read property 'length' of undefined 

빈 응답으로 인해 발생하는 것 같습니다.

내가 뭘하려

: 내 컨트롤러를 디버깅

return View(service.getListTestPlan()); 빈 목록을 반환하지 않습니다 내게 보여 주었다 : 나는 3 개 유효한 항목이

또한 Html.Infragistics().Grid<BusinessModel.Models.TestPlan>(Model__.ToList()) 시도했지만 아무것도 변경되지 않습니다.. 또한 Html.Infragistics().Grid(Model)에 잘못된 매개 변수가 있다고 알립니다.

미리 감사드립니다.

답변

5

나는 왜 당신이 이것을 얻고 있는지 꽤 좋은 생각을 가지고 있다고 생각합니다. 나에게도 일어났습니다.

MVC 래퍼는 그리드 모델이 서버의 데이터를 처리하는 방식에 대한 기본값을 제공합니다. 데이터의 '레코드'와이를 지원하는 '메타 데이터'로 개체를 직렬화합니다. 그러나 자신의 키를 정의하지 않았기 때문에 자신을 수행하면 응답을 필터링하는 데 사용되는 기본 키 '레코드'가 붙어 있기 때문에 거기에 없기 때문에 '정의되지 않은'데이터가 수신됩니다. 그리드 :

그래서

솔루션 :

  • 1) 응답을 싸서 그리드의 "ResponseDataKey"속성을 사용하여 키와 일치하는 정의합니다. 나는 이것이 하나의 객체에 응답을 감싸는 것이 좋은 습관 인 것을 기억하고 있기 때문에 이것을 제안하고있다. 보안과 관련이 있다고 생각하기 때문이다.

  • 당신이이 일을 같은 느낌 그냥 지금 다음 그래서 당신의 응답을 제대로 필터링됩니다 빈 문자열 (""할 것이다)에 "ResponseDataKey"로 설정 작업 얻을하지 않으려는 경우 2) (또는 오히려).

그리드를 뷰의 모델 데이터에 직접 바인딩하는 두 번째 부분에서 볼 수있는 한 정확하게 오류가 발생합니다. DataSource property 명시 적으로 소스 IEnumerable 대신 IQueryable 구현해야합니다. 그것에서 AsQueryable()을 두드리고 잘 작동해야합니다.

이 정보가 도움이되는지 알려주십시오.

+1

두 번째 해결 방법이 적용된 답변으로 표시하겠습니다. 감사. 그러나, 클래스의 가상 속성 때문에 serializer가 자신의 업무를 수행하지 못했습니다. DTO 클래스를 사용하여 작동하도록했습니다. –

+1

직렬화는 슬픈 듯이 슬픈 듯이 슬픈 듯이 기본 .NET의 것들은 실제로 DTO-s와 비슷합니다. 그리고 MVC 모눈 모델을 사용하여 데이터에 바인딩하면 그것들을 사용할 것입니다. 지금까지 나에게있어서 JSON.NET은 대부분의 것을 매우 잘 처리했다. 또한 데이터 응답을 생성 할 때 더 빠르다. –

관련 문제