ASP MVC RedirectToAction在不使用ViewData的情况下传递对象数组

时间:2011-04-11 11:02:15

标签: asp.net-mvc-2 redirecttoaction

我有以下方法

 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
        );

搜索中,publications数组中填充了超过13000个对象,但是当我重定向到 BookListing 时,会传递null。

有没有办法使用RedirectToAction将一个对象数组从一个操作方法传递到另一个?

感谢。

1 个答案:

答案 0 :(得分:2)

您始终拥有TempData集合。这在单个请求的操作重定向之间保持不变,因此为您提供了类似的存储...