2012-09-11 2 views
0

제품 목록을 가지고 있으며 각 페이지를 새로 고치는 데 번으로 부분을 보냅니다. 페이지 당 5 개입니다. 모든 부품이 표시되면 다음 새로 고침시 목록의 시작 부분부터 다시 시작됩니다. 제품 목록 개수가 배당액 5가 아닌 경우 (예 : count = 23) 처음으로 돌아갑니다. 즉 15-20, 그 다음 20-2 (21, 22, 23, 1 및 2)를 취합니다. 그런 다음 3-8 단계를 계속합니다. 나는 모든 상쾌한 사이트에서 조회 및 업데이트에 모든 작업에서 해당 5 개 제품을 보내드립니다 때문에목록 항목을 mvc3에서 파트별로 보도록 보내는 방법은 무엇입니까?

ViewBag.Result = db.Products.Skip((pageNo - 1) * 5).Take(5).ToList(); 

:

나는 같은 페이징 규칙을 사용할 수 없습니다.

나는 무작위 색인 및 시작을 가지고 그러나 마지막으로 보내는 색인을 알고 각 리프레쉬에서 컨트롤러의 현재 작업으로 보내야한다는 아이디어가 있습니다. 이것을 어떻게 할 수 있습니까?

답변

1

HTTP 호출간에 마지막으로 보내는 인덱스를 유지해야합니다. 부터 HTTP는 상태 비 저장이므로 중간에두기위한 매체가 필요합니다. 세션 변수 할 수 있습니다.

Session["LastIndexSent"]= 5; 
return View(someITemList); 

또한 시도는 ViewBag 이러한 결과 전송을 방지합니다. ViewBag/ViewData과 같은 동적 인 요소를 사용하여 컨트롤러와 뷰간에 데이터를 전송하면 코드가 추악 해집니다. 강력하게 형식화 된 접근 방식을 사용하십시오.

List<Product> productList=GetProductListFromSomeWhere(); 
return View(productList); 

그리고 당신의 강력한 형식의보기에서

,

@model List<Product> 
@foreach(var prod in Model) 
{ 
    <p>@prod.Name</p> 
} 
+0

예 내가 ViewBag를 사용합니다. 부분별로 요소를 가져 오는 코드를 작성해야하며 세션에 대한 대답을 사용할 것입니다. 그러면 결과에 대해 말할 겁니다. –

+0

세션에 대한 정보가 없습니다. 이 줄에 : 세션 [ "LastIndexSent"] = 5; 5 기본 (시작) 값입니까? 어떻게 세션 변수에 기본값을 설정합니까? 시작을 위해 –

+0

보기로 일부 데이터를 전송할 때마다 세션 값을 설정하고, 다음 번에 읽고, 마지막으로 보낸 내용을보고, 다음에 보낼 내용을 결정한 다음 수행하십시오. 세션 값 업데이트 – Shyju

관련 문제