我正在尝试找到视频控制器通信的最佳实践,以便我需要进行示例过滤。
我有页面上的项目集和过滤器控件。我按字母,状态等过滤物品...... 这是一个简单的场景,我将过滤器选择的值发送到控制器,控制器将结果返回给页面。
如果你考虑一下,那就是一个方向周期。查看具有参数(过滤器值)的调用控制器,控制器调用数据库,然后获取元素并将该元素提供给视图。有没有办法向控制器发送这些元素和控制器只是为了过滤它们并将过滤后的集合返回给视图?或者也许是为了缩短这次服务器的行程,给控制器提供元素和控制器的id,以便知道从数据库中提取哪些元素然后过滤它们,给过滤后的集合...
糟糕的做法? 有些可以解决吗?
您怎么看?
由于
答案 0 :(得分:0)
我是如何做到的,就像你在上一个parag中提到的那样:
向控制器发送这些元素和控制器只是为了过滤它们并将过滤后的集合返回给视图
您可以使用linq执行此操作。那么让我们说你发送一个List。因此,当您执行过滤器时 - 让我们按类别说 - 您期望按类别过滤列表(假设为Category =“Book”)。
因此,在你的控制器中,你的List()动作(或你称之为的任何动作)应该准备好采用过滤器参数。基于该参数,然后使用LINQ缩小要传递给视图的集合。像这样:
public ActionResult List(bool fromCache, string filter)
{
// if filtering - always pull from cache to increase performance
ProductList productList;
if (fromCache)
productList = Session[SessionKeys.ProductList] as ProductList;
else
{
productList = ProductInfoList.GetProductInfoList();
Session[SessionKeys.ProductInfoList] = productList;
}
// apply filter
var data = productList.Where(p => p.Category == filter);
return View(ViewLocations.ProductListing, data);
}
代码可能在语法上不正确,但你去了 - 祝你好运。