2012-09-27 4 views
0

사용자 지정 모델 개체를 전달하는 간단한 ASPNET MVC 목록보기가 있습니다. 처음에는 서버로 이동하여 개체 목록을 표시하고 전망. 다른 열, 검색 및 페이징으로 정렬 할 수 있도록보기를 빌드 중이므로이 코드를 모두 작성했습니다. 그러나 매번 서버에 가서 데이터를 가져옵니다.서버 호출없이 mvc 목록보기 정렬 및 검색

처음으로 얻은 목록을 사용하여 이러한 DB 왕복을 줄일 수 있습니까? 그렇다면보기에서 컨트롤러로 다시 전달하는 방법은 무엇입니까?

Viewdata, Tempdata - 또는 formcollection 아마도 전달할 수 있습니까?

답변

1

http://www.knockoutjs.com을 보면 브라우저에서 목록을 조작하고보기를 동기화 상태로 유지할 수있는 많은 기능을 제공합니다.

하지만 실제로 개체 목록이 얼마나 큰지에 따라 다릅니다. 데이터 양이 많으면 실제로 구현 한 방식보다 실제로 더 실용적인 솔루션입니다.

+0

안녕하세요. 나는 자바 스크립트에서 잠시 머물러 있기를 바랬다. 누구나 ASPNET MVC에서 수행 할 수있는 방법에 대한 다른 아이디어가 있습니까? – user964810

+0

브라우저에서 목록을 저장하고 처리하려는 경우 자바 스크립트에서 멀리 떨어져있을 수는 없습니다. 솔루션을 생각해 내면 궁금해 할 것입니다. 결과를 게시 해주십시오. – IMLiviu

1

실제로 컨트롤러로 돌아 가면 서버에 연결됩니다.

필자는 데이터베이스를 다시 쿼리하여 필터링, 정렬 및 페이지 매김을 얻지 않으려 고하고,보기에서 데이터보기를 사용하여 모델보기 클래스의 데이터를 정렬하거나 페이지 매기기를 원합니다.

이러한 유형의 작업은 데이터베이스를 다시 쿼리하는 것보다 항상 좋을 필요는 없다는 것을 명심하십시오. 서버를 통해 더 많은 정보를 그물을 통해 서버로 보내고, 일반적으로 목록과 같은 프로그램 방식으로 정렬합니다 요소는 데이터베이스에서 정렬 된 검색보다 덜 최적화 된 연산입니다.

여기서 중요한 결정은 데이터베이스 쿼리 비용과 listview 요소 크기 사이에있을 것입니다. 쿼리가 가볍고 많은 결과를 얻거나 얻을 수있는 경우 쿼리는 쿼리보다 비용이 많이 들지만 쿼리가 복잡하고 일반적으로 몇 가지 결과가 나오면 효과적으로 데이터베이스를 쿼리하지 않고 데이터를 정렬하는 것이 더 효율적입니다. .

정렬을 위해 새 컨트롤러 메서드를 만들려고하면이 메서드는 목록보기 모델 클래스의 매개 변수로받으며 서버에 해당 정보를 다시 보내야합니다. 일반적으로 AJAX 호출을 사용하여 데이터를 JSON으로 컨트롤러에 전달합니다.

+0

답변 해 주셔서 감사합니다. 현재 우리가 가져오고있는 데이터는 작고 가볍습니다. 따라서 데이터베이스를 리콜하지 않는 것이 좋습니다. 아래에서 말했듯이 JS를 피하고 Controller에서이 모든 작업을 수행하기를 바랬습니다. Controller에 대한 서버로 돌아 가면 맞습니다. 데이터베이스에 여분의 비트도 추가 할 수 있습니다. 다시 한번 감사드립니다. – user964810

관련 문제