2014-04-23 2 views
0

저는 현재 MVC 애플리케이션의 편집 페이지에 검도 UI ASP.NET MVC 그리드를 포함하려고합니다. 그리드가 현재 경로 ID의 값만 반환하도록 제한하고 싶습니다. 나는 이것을 수행하는 방법을 연구 해왔지만 정확히 내가 필요한 것을 찾을 수 없거나 점을 연결하기에는 너무 새롭다.검도 그리드를 현재 루트 ID로 제한

내 생각에 지금까지 필터를 DataSource에 적용하거나 컨트롤러에 매개 변수를 보내고 DataSourceResult를 제한하도록했습니다.

.Filter(filters => { filters.Add(d => d.CompanyId).IsEqualTo(2); }) 

하지만 ViewContext.RouteData.Values ​​@ 말에서 값으로 하드 코드 (2)를 교체하는 방법을 알아낼 수 없습니다 :

뷰의 데이터 소스 필터

,이 작업을 수행 할 수 있습니다 [ "id"] 또는 무엇인가. 컨트롤러에 매개 변수를 전달

, 나는 다음을 얻을 수 있습니다 :

public ActionResult Divisions_Read([DataSourceRequest]DataSourceRequest request, int id) 
{ 
    using (var db = new AppContext()) 
    { 
     IQueryable<Division> divisions = db.Divisions; 
     DataSourceResult result = divisions.ToDataSourceResult(request, division => new DivisionViewModel 
     { 
      DivisionId = division.DivisionId, 
      CompanyId = division.CompanyId, 
      CountryId = division.CountryId, 
      DivisionName = division.DivisionName 
     }); 
     return Json(result); 
    } 
} 

하지만 내가 어떻게 기본적으로 추가 할 해당 ID를 사용하는 아무 생각이없는 "경우 회사 ID = 아이디"결과에 문.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 정말 분명한 것을 놓치고 있는가?

감사합니다.

ETA : 내 연구 mmillican 및 기타 장소에 의해 제안, 읽기 작업을 통해 컨트롤러에 매개 변수를 전달하고, 변경

DataSourceResult result = divisions.ToDataSourceResult(request, division => new DivisionViewModel 

DataSourceResult result = divisions.Where(c => c.CompanyId == companyId).ToDataSourceResult(request, division => new DivisionViewModel 

트릭을했다. 컨트롤러의 여분의 비트는 내가 찾고 있던 것이었지만 어느 곳에서도 찾을 수 없었습니다.

답변

0

이 보이는 페이지의 모델이 가정 :

public class MyViewModel 
{ 
    public int Id { get; set; } // assuming Id is what you want to filter by 

    // .. other VM properties 
} 

당신이 당신의 그리드 데이터에 이런 일을 할 수있는 컨트롤러의

.DataSource(ds => ds 
    .Ajax() 
    .Model(mdl => mdl.Id(x => x.Id)) 
    .Read("Divisions_Read", "Divisions", new { id = Model.Id }) 
) 

바인딩을, 당신은을 설정합니다 모델의 Id 속성이 경로에있는 ID와 일치하는지 확인하십시오.

+0

필자는 필터를 사용하여 하나의 해결 방법을 알아 냈지만 읽기 작업을 통해 컨트롤러에 매개 변수를 전달하는 것이보기에 추가 데이터를 반환하지 않기 때문에 더 나은 솔루션입니다. 위의 질문을 컨트롤러의 최종 변경으로 업데이트했습니다. 감사! – DivisionByZero

관련 문제