|
|
1
1
数据访问 -如果你习惯的话,ado.net是很好的。我用亚音速主动索和Petapoco取得了很好的效果。安装后,它将整个数据访问业务转移到一边,而不需要任何实质性的学习投资,这与许多其他窗体不同。它们是免费使用的,我绝对推荐。 桌子 -如果在业务类中检索后要组合的多组数据具有非常复杂的交互,则局部视图可能很有用。但是,如果您呈现的数据来自一个表,或者甚至接近作为查询结果的最终表单,则没有理由使用它们。相反,使用foreach循环迭代数据,并以此方式格式化HTML。 像网格一样的表示方法非常简单。
这甚至可以通过HTML表来实现,因为您提供了数据表。
栅格外观 -至于外观,例如根据内容对数据进行条带化或着色,将这些决策作为您发送的模型数据的一部分,并在视图中简单地使用CSS类来实现这一点。例如,您可以在Odd偶数字段中返回值“奇数”或“偶数”,这将是您可以在样式表中设置样式的CSS类。
分选 -至于如何使用大量的jquery或javascript对数据进行排序和操作,我会等到遇到一些已知的性能问题后再一直担心重新加载数据。但是,如果每次重新加载数据,则可能会发现网格中的数据不断刷新,并且用户发现这些数据丢失了光标的位置,或者在编辑时被中断,或者更改会触发数据库中未完成编辑的事件。 尽管看起来数据网格是按日期顺序排列的,并且有人更改了日期,但最重要的是立即使用数据。我并不声称了解您的情况,但经过多年的努力,我发现让用户完成他们的工作(例如,通过跳过该方法)通常更重要的是重新排列行,这通常意味着试图编辑的数据已跳到其他地方,他们必须再次找到它。 一个引人注目的界面可能是,当数据元素发生变化时,保存会被发送到后台,但网格不会重新定位或使用。当然,下一次刷新页面时,会重新使用它,但不会在编辑会话期间使用。只是一个考虑的想法。 客户端交互 -如果你的应用有很多用户和大量的编辑,如果你在每次编辑时刷新数据,大数据集会导致大量的流量。但是,如果这是一个内部应用程序,用户有限或活动有限,这当然不是一个问题。使用jquery编辑数据非常有效-您可以在编辑数据时添加调用来保存数据,这可以使应用程序具有传统Web应用程序所缺乏的可用性。 |
|
|
2
1
我将考虑使用jqgrid(jquery grid插件)并实现内联编辑。创建控制器操作,将所需数据作为jsonresult返回。使用linq2sql或实体框架访问数据层。 |
|
3
1
MVC框架实际上并不支持一种数据访问方法而不是另一种。显然,MVC的一个主要优点是它改进了可测试性,因此以这样的方式构造代码是有意义的:控制器可以与单元测试的数据访问逻辑分离。实现这一点的最简单方法是通过存储库模式,您可以使用ADO.NET实现该模式。 要呈现表格数据,最好在视图中使用foreach循环,而不是使用分部。如果存在复杂的逻辑,这可能会变得混乱,但可以通过使用HTML助手来清除。参见Rob Conery的优秀文章 avoiding tag soup 关于这方面的一些建议。 我认为行编辑的最佳方法是让每行编辑对一个编辑操作发出一个Ajax请求,这样您就不需要刷新所有数据。当MVC无缝地处理动作参数的绑定时,这很容易做到。您可以为此采取特定的操作,将状态消息发送回用户反馈。我会为这个滚动您自己的功能,因为这很容易做到。 对于刷新所有数据,我发现最简单的方法是使用bool?is partial参数在视图上,如果未定义或为false,则呈现完整视图;如果为true,则呈现部分视图。然后,您可以在第一次请求时正常调用相同的操作,然后在发出Ajax请求时通过ispartial=true发送。然后可以使用jquery将表的HTML更新为完整块。这比返回JSON和解析客户端更快。 |