我目前正在研究一个合理简单的MVC应用程序,它允许用户输入一些搜索数据,获得结果列表,然后查看每个项目等等。这一切都很顺利,但我现在试图实现分页但有一些麻烦。ASP.NET MVC Paging - 将复杂类型传递回控制器?
我的搜索表单使用HTTP GET,请求了以下行动:
public ActionResult Results(PropertySearchData data, int? page)
{
...
IEnumerable<Property> search = mService.SearchProperties(data);
ViewData["SearchData"] = data;
return View("Results", "Site", search.ToPagedList(page ?? 0, 20));
...
}
在这里,我建我的成绩表从传递到我看来,IEnumerable集合。另外,我使用ViewData来保存搜索参数,以便在用户请求其他页面时传递它们。
例如,去的第一页,我想用这样的:
Html.ActionLink("First", "Results", new { data = ViewData["SearchData"], page = 1 })
然而,产生这个链接的时候,我的链接是沿
/Results?data=PropertySearchData&page=1
线
如果我完全删除'page'参数,并传递ViewData [“SearchData”]作为我的路由值,我的链接就会生成我想要的(即PropertySearchData的每个成员都作为查询字符串传递模型绑定功能,我猜这是因为模型绑定只能在正确的时候工作你已经指定了一种类型?
我可以看到几个原因,为什么这不起作用;我遇到的麻烦是制定出“我很好”的方式去做我想做的事情。我知道我必须在这里缺乏重要的理解,所以如果我能够得到关于如何解决这个问题的一些指示,我们将不胜感激。
请注意,我真的想坚持HTTP GET(因为这是一个搜索结果页面)。
谢谢!
啊,这很好,整洁,谢谢! – CapBBeard 2009-05-06 00:41:53