我有一个简单的ASPNET MVC列表视图,它传递一个自定义构建的模型对象。第一次通过我需要去服务器并返回一个对象列表并显示在视图上。 我正在构建视图以允许按不同的列进行排序,搜索和分页,并且我已经为此编写了所有代码。但是,每次我去服务器并提取数据。
我可以使用我第一次获得的列表来减少这些数据库往返吗? 如果是这样,我如何将它从视图传递回控制器?
Viewdata,Tempdata - 或者也许传递formcollection
?
答案 0 :(得分:1)
看看http://www.knockoutjs.com这将为您提供很多功能,可以在浏览器中操作列表并保持视图同步。
但这实际上取决于你的对象列表有多大。如果数据量很大,那么实际上解决方案实际上是一种更实用的解决方案。
答案 1 :(得分:1)
实际上,如果你回到你的控制器,你将会去服务器。
我认为你真的意味着你不想再次查询你的数据库以获取过滤,排序和分页的数据,并且只想在模型视图类中对数据进行排序或分页,并在视图上使用数据。
请记住,这种类型的操作并不总是比重新查询数据库更好,因为您将通过网络向服务器发送更多信息,并且通常以编程方式对类似列表的元素进行排序操作不如从数据库中排序的检索优化。
此处的关键决策将介于数据库查询的成本和listview元素的大小之间。如果您的查询很轻并且获得(或可以获得)许多结果,那么对它进行排序将比重新查询更加昂贵,而如果您的查询很复杂并且通常会抛出很少的结果,那么实际上,在不重新查询数据库的情况下对数据进行排序会更有效
尝试为排序创建一个新的控制器方法,此方法将接收列表视图模型类作为参数,并且您将需要以某种方式将该信息发送回您的服务器。我通常使用AJAX调用,将数据作为JSON传递给控制器。