2013-02-15 2 views
0

화면에 약간의 데이터를 표시하는 MVC 앱을 구축 중입니다. 나는 수백 또는 어쩌면 수천 개의 데이터를 갖게 될 수도 있습니다. MVC - 페이지 목록 : 텍스트 상자, 확인란 및 드롭 다운 목록을 사용하여 모든 값을 메모리에 유지합니다.

그래서 나는이 자습서 다음은 PagedList 형식을 사용하고 있습니다 :

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

이 저를 도운. 페이지 된 목록이 작동합니다. 그러나 나는 해결할 방법을 찾지 못하는 한 가지 문제가 있습니다. 이 자습서에는 텍스트 상자가 하나 뿐인 매개 변수가 있으며 자습서에서는 페이지 변경이 텍스트 상자의 텍스트를 "플러시"하지 않도록 ViewBag 매개 변수를 유지하고 특성을 지정하여 "메모리에있는"값을 유지합니다.

바로 지금 나는 23 개의 매개 변수와 세기를 가진 검색 엔진과 같은 것을 구축하고 있습니다. 이러한 매개 변수 중에는 확인란, 텍스트 상자 및 드롭 다운 목록이 있습니다.

내 질문 : 메모리에 유지할 수있는 방법이 있습니까? 어떻게하면됩니까? 튜토리얼처럼 메모리에 모두 보관해야합니까?

대단히 감사합니다!

답변

0

글쎄, 튜토리얼에서, 그들은 실제로 요청 사이에 "기억 속에"있지 않습니다. 각 요청에서 값은 조치 메소드에 전달되며,이 메소드는 호출 메소드를 호출하여 페이징 및 정렬 링크를 작성하는 데 사용합니다. I을 사용하여 링크를 생성하고,를

NameValueCollection queryString = helper.ViewContext.HttpContext.Request.QueryString; 

foreach (string key in queryString) 
{ 
    if (key != null) 
    { 
     if (!newValues.ContainsKey(key)) 
     { 
      if (!string.IsNullOrEmpty(queryString[key])) 
      { 
       newValues[key] = queryString[key]; 
      } 
     } 
    } 
} 

: 대신에 개별적으로 각 파라미터를 추가 페이징 때

이전에는, I 단순히 쿼리 스트링을 판독하여 각각 제공된 파라미터를 사용하여 링크를 구축하는 방법이 :

  string link; 

      if (!string.IsNullOrEmpty(routeName)) 
      { 
       link = helper.RouteLink(text, routeName, newValues).ToString(); 
      } 
      else 
      { 
       actionName = actionName ?? values["action"].ToString(); 
       controllerName = controllerName ?? values["controller"].ToString(); 

       link = helper.ActionLink(text, actionName, controllerName, newValues, null).ToString(); 
      } 

      return string.Concat(" ", link); 
0

AJAX 기술을 사용하는 경우 컨트롤러에 2 가지 동작 방법을 만들 수 있습니다.

첫 번째 뷰는 전체 뷰를 반환하고 두 번째 뷰는 부분 뷰를 반환해야합니다.

처음에는 검색 컨트롤 (모두 23 개)이 포함됩니다. 이들은 처음으로 렌더링됩니다.

두 번째 매개 변수는 부분보기를 반환하며 검색 쿼리에 대해 23 가지 매개 변수로 매개 변수화됩니다. ViewModel 클래스에 모든 요소를 ​​채우고 기본 모델 바인더가 런타임에이를 바인딩하도록하는 것이 좋습니다.

마지막으로 JavaScript/jQuery를 사용하여 두 번째 방법으로 AJAX를 호출하여 검색 결과 페이지의 결과 부분을로드 할 수 있습니다.

관련 문제