2011-04-11 5 views
1

다음ViewData를 사용하지 않고 개체 배열을 전달하는 ASP MVC RedirectToAction

 public ActionResult Search(FormCollection form) 
    { 
     ....... 
     Publication[] publicationsResult = server.SearchLibrary(this.getSession(), sq); 

     return RedirectToAction("BookListing", new { publications = publicationsResult }); 
    } 

서버에서 게시 목록을 가져 와서 게시 형식의 배열에 저장합니다.

다른 페이지에 결과를 표시하고 싶습니다. 따라서 다음과 같은 방법으로 리디렉션했습니다.

public ActionResult BookListing(Publication[] publications) 
    { 
     Publication[] p = publications; 
     return View(publications); 
    } 

또한 다음 라우팅을 정의했습니다.

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Library", action = "Search", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "PublicationListing", // Route name 
      "{controller}/{action}/{publications}", // URL with parameters 
      new { controller = "Library", action = "BookListing", publications = UrlParameter.Optional } // Parameter defaults 
     ); 

검색 발행물 배열은 13000 개가 넘는 개체로 채워지지만, BookListing으로 리디렉션하면 null이 전달됩니다.

한 작업 메서드에서 다른 개체로 RedirectToAction을 사용하여 개체 배열을 전달할 수 있습니까?

고마워.

+0

정말 사용자를 리디렉션해야합니까? 검색 작업에서 BookListing보기 만 반환 할 수 있습니다. – tomasmcguinness

+0

이상적으로 사용자가 URL을 북마크 할 수 있기를 바랍니다. – DreX

+0

전체 배열을 URL로 전달할 수있는 것으로 변환하려고합니다. 처음에는 URL에 256 자만 있기 때문에 작동하지 않습니다. – tomasmcguinness

답변

2

항상 TempData 컬렉션이 있습니다. 이것은 단일 요청에 대한 작업 리디렉션 사이에 유지되므로 다음과 같은 용도로 저장소를 제공합니다 ...

+0

나는 TempData와 다른 방법을 찾고있다. 하지만 명확히하기 위해 TempData 사전은 단 한 번의 리디렉션 만 위해 해당 데이터를 보유 할 것입니다. – DreX

+0

올바른 - 임시 데이터는 요청 중에 만 지속됩니다. – Timbo

관련 문제