MVC 3 WebGrid分页不返回原始搜索结果

时间:2012-01-25 07:55:39

标签: c# asp.net-mvc webgrid

我有一个搜索页面,在加载时填充webgrid。我的问题是分页。 在加载时,我用“未发布”文章填充网格(在这种情况下没有)。 然后我搜索“当前发布”并获得3行。

现在我有3个页面(为了测试目的,我将页面设置为每页一行)。 它第一次搜索 - 它在网格中得到正确的答案,并且可以说有2页。

如果我单击2转到第二页 - 网格填充了加载的标准 - 未发布,其中没有。我看到我没有回到页面点击的HttpPost动作 - 所以我不确定为什么会这样做。

您可以看到我有一个名为Admin的初始加载 和一个名为Admin的帖子(FormCollection值) 在两者上我都将默认值设置为“未发布”

        public ActionResult Admin()
        {

            var menus =
            (
                 from p in db.Menus.ToList()
                 where p.ParentID == 0
                 orderby p.Order ascending
                 select p.Name
            );
            ViewBag.Menus = new SelectList(menus, "Home");

            string[] publishedStatuses = new string[3] 
                   { "NOT PUBLISHED", "EXPIRED ALREADY", "CURRENTLY PUBLISHED"}; 
            ViewBag.Published = new SelectList(publishedStatuses, "NOT PUBLISHED");

            var articles =
            (
                    from p in db.Articles.ToList()
                    where p.PublishToWeb == false && p.Menu == "Home"                  
                    select p
             );

            }
            return View(articles);
        }              
} 

1 个答案:

答案 0 :(得分:0)

您的问题是,您点击页面的链接会再次调用管理控制器操作,由于您没有收到任何参数,它将再次进行初始搜索。

如果您将操作方法​​更改为:

public ActionResult Admin(int? page)
{
   //Your code here
}

您将从网格中获取页码,并可在搜索中使用该页码。要启用过滤和搜索,请查看此博客文章:

http://www.elylucas.net/post/Using-a-grid-that-can-sort-page-and-filter-in-AspNet-MVC3e28093Part-1e28093Using-the-WebGrid-WebHelper.aspx