ASP MVC RedirectToAction, передающий массив объектов без использования ViewData - PullRequest
1 голос
/ 11 апреля 2011

У меня есть следующий метод

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

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

, который получает список публикаций с сервера и сохраняет его в массиве типа Publication.

Я хотел бы показать результаты вдругую страницу, таким образом я перенаправил на следующий метод:

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?

Спасибо.

1 Ответ

2 голосов
/ 11 апреля 2011

У вас всегда есть коллекция TempData.Это сохраняется между перенаправлениями действий для одного запроса и поэтому предоставляет вам хранилище для чего-либо подобного ...

...