일반적인 시나리오에서는 컨트롤러가 DataSourceRequest를 컬렉션의 DataSourceResult에 전달하고 Json을 반환하는 컬렉션에 Kendo MVC Razor 또는 다른 모든 표가 바운드 된 것 같습니다 결과는 다음과 같습니다.Kendo MVC Razor Grid 컨트롤러에서 오히려 하나의 모델을 전달하는 방법
public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string taskKey)
{
var query = eSerivce.GetData(taskKey);
var result = query.modelCollection.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
위의 코드는 모든 종류의 컬렉션 및 그리드에서 잘 작동하므로 데이터가 올바르게 렌더링됩니다.
내 시나리오에서는 하나의 모델이 서비스 계층의 컬렉션 대신 오히려 ToDataSourceResult를 단일 엔터티에서 사용할 수 있으므로 DataSourceRequest를 전달할 수 없으며 DataSourceRequest를 전달할 수 없으므로 정보가 렌더링되지 않습니다. .
내가 쿼리를 반환 할 때 위의 코드에서
public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string taskKey)
{
var query = eSerivce.GetData(taskKey);
var result = query. // no ToDataSourceResult available here because of single model
return Json(query, JsonRequestBehavior.AllowGet);
}
없는 ToDataSourceResult 사용할 수 있습니다로는 그리드는 데이터를 렌더링니까. 나는 하나의 모델 엔티티를 콜렉션으로 변환하여 필요한 작업을 적용 할 수 있다는 것을 알고 있지만,이 상황을 해결하기위한 다른 방법이 있는지 궁금합니다. 하나의 레코드 만 반환하는 주요 이유는 행 확장의 사용자 정의 템플리트 행에 상위 그리드의 과도한 정보를 표시하는 것입니다. 다른 방법으로
가' "내가 알고있는 경우에 나는 할 수 내 단일 모델 엔티티를 콜렉션으로 변환하십시오. "- 그렇게하는 방법입니다. 프레임 워크 컴포넌트가 (그리드처럼) 콜렉션을 기대하고 있다면 콜렉션을 전달하십시오. 하나의 요소로 채워지는 컬렉션은 여전히 컬렉션입니다. 그리고 비 수집 객체에 바인딩하기 위해 컴포넌트를 수정하는 것보다 훨씬 쉽습니다. – David
이런 식으로 상위 레코드에 대한 추가 정보를 표시하는 경우 하위 템플릿에서 표를 사용하는 이유는 무엇입니까? 비 수집 모델에 더 적합한 컨트롤을 사용할 수 없습니까? –
@RossBush 그리드는 행 확장에서 주문형 아약스 호출을 보내는 데 사용됩니다. 이 목적을 위해 어떤 다른 컨트롤을 제안합니까? 그냥 템플릿 내 템플릿에 있다는 것을 알려주기 위해 jQuery ajax 호출을 실행하는 것은 템플릿의 @ 태그와 함께 쓰는 옵션이 아니기 때문에 옵션이 아닙니다. –