【发布时间】:2011-08-02 23:37:49
【问题描述】:
我有以下方法
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
);
在 Search 中,publications 数组填充了超过 13000 个对象,但是当我重定向到 BookListing 时,传递了 null。
有没有办法使用 RedirectToAction 将对象数组从一个操作方法传递到另一个操作方法?
谢谢。
【问题讨论】:
-
你真的需要重定向用户吗?您可以从 Search 操作中返回 BookListing 视图。
-
理想情况下是的,因为我希望用户能够为网址添加书签
-
您实际上是在尝试将整个数组转换为可以在 URL 上传递的内容。这是行不通的,因为您在开始时 URL 中只有 256 个字符。
-
您可以将搜索保存在数据库中并向用户返回该搜索的 ID,以便他们可以为结果添加书签或将搜索参数放入请求 /Search?title=Test&author=John 等。之类的东西——这样他们就可以为它添加书签。
标签: asp.net-mvc-2 redirecttoaction