나는 여러 개의 "자식"테이블이있는 메인 테이블을 가지고 있습니다. TableA 및 TableAChild1 및 TableAChild2.내 "필터링"로직은 View 또는 Controller에서 Linq-2-SQL 및 ASP.NET-MVC와 함께 있어야합니까?
TableA의 정보를 표시 한 다음 TableAChild1과 TableAChild2에있는 모든 항목의 두 열을 표시하는 뷰가 있으며 부분보기로 렌더링됩니다.
두 자식 테이블 모두 VisibleToAll에 대한 비트 필드가 있으며 사용자 역할에 따라 관련된 모든 행 또는 VisibleToAll = true 인 관련 행을 표시하려고합니다. 이 컨트롤러에 있어야처럼
이 코드는 느낌하지만 약자로, 컨트롤러 (limmited 버전)과 같이 보이기 때문에 나는 그것이 어떻게 보일지 모르겠어요 :
return View("TableADetailView", repos.GetTableA(id));
겠습니까을 이 같은 일이 심지어 일하고 내 DataContext가 전송되면 VisibleToAll == false를 갖는 모든 행을 삭제하는 것이 좋지 않을까요?
var tblA = repos.GetTableA(id);
tblA.TableAChild1 = tblA.TableAChild1.Where(tmp => tmp.VisibleToAll == true);
tblA.TableAChild2 = tblA.TableAChild2.Where(tmp => tmp.VisibleToAll == true);
return View("TableADetailView", tblA);
또한 기본보기에서 RendarPartial 호출하는 로직을 추가하는 간단한 것이다 :
<% Html.RenderPartial("TableAChild1", Model.TableAChild1.Where(tmp => tmp.VisibleToAll == true); %>
내 저장소가 IQueryable 항목을 반환합니다. 그러나이 경우에는 하나의 레코드와 하위 레코드가 표시되기 때문에 부모 테이블의 컨트롤러에서 이미 SingleOrDefault()를 호출했기 때문에 연기 된 실행 방법이 확실하지 않습니다. – Nate
+1은 합리적이며보기 모델에 대해 설교하지 않기 때문에 +1합니다. – jfar