我们将使用MVC 4构建应用程序。关键要求是视图级审计。换句话说,我们必须能够显示访问视图/屏幕的人员(例如,人员详细信息),创建视图的参数以及访问视图的时间。这是一个新的应用程序,因此我们几乎可以做任何需要做的事情来满足这个要求。
数据库将是SQL Server 2008.数据访问将包括EF 4.x,可能是5.x,但不是肯定的。
我的问题是,如何开始设计此功能?那里有样品申请吗?
答案 0 :(得分:1)
不介意在视图级别进行审核。我认为审核行动会更好。您可以使用全局操作过滤器(例如here)来执行此操作。
答案 1 :(得分:0)
EF与Views无法很好地协作。使用直接编写的ADO.NET持久层,或者Linq2Sql在使用视图方面稍微好一些(你仍然需要手动连接它们),你可能会更好。 nHibernate可能是最好用的ORM。
编辑:
@ user1469655 - 您对MVC的工作原理有一个非常基本的误解。 “视图”不是页面。这是一个模板。您可能会考虑的“页面”(即访问特定网址)实际上是两个不同事物的组合,即路线和动作。动作可以使特定模板(视图)呈现,但动作和视图之间不一定有1:1的相关性。
“动作”是控制器的方法。这通过路由映射到URL。通常(但不一定),这意味着这样的事情:
http://www.my.site/controller/action
当用户访问此URL时,会导致调用操作方法,并可能导致呈现视图。不同的操作可以呈现相同的视图,因为这只是一个可以通过任何操作方法随意呈现的html模板。
所以你想要做的事情取决于你实际记录的内容。记录对视图的访问没有任何意义,因为这实际上并不意味着什么。您要做的是通过操作进行日志访问,或者甚至可以通过路由记录。
最简单的方法是使用在每个操作之前调用的全局操作过滤器,在该过滤器中,您可以记录所需的信息(用户ID,日期,时间,操作,引用,等等)。并且每个动作都会调用它。但是,它不会被调用被忽略的路由(例如javascript,图像,css,直接下载的文件等内容)。如果您需要记录这些,那么您将需要通过操作来控制对它们的访问。
这里有一个关于动作过滤器的好教程