基本控制器的最佳实践

本文关键字:最佳 控制器 | 更新日期: 2023-09-27 18:08:06

当我还是一个asp.net webforms开发人员的时候,我曾经创建过一个基页,在那里我曾经放置过将在应用程序中使用的常用方法和属性,然后每个页面都将继承该页面。

我想知道如何做到这一点为mvc 4,有任何指导方针,或只是创建一个基本的控制器类,并从该类继承所有控制器?

你通常在基本控制器类中放什么?

谢谢

基本控制器的最佳实践

我避免使用基本控制器(继承)来解决这个问题,因为它有点难闻。你确定你的控制器需要所有这些常用的方法和属性吗?至少有一些功能可以作为Controller类型上的扩展方法来实现。

另外,其他功能可能更适合作为注入到控制器中的服务。对于需要某些(请求)状态的常见方法,我更倾向于使用服务方法。

也有可能至少有一些功能属于动作过滤器(检查权限,设置某些用户配置文件,处理异常等)。

作为经验法则,我尽量避免在控制器中使用继承。控制器应该尽可能简单,我需要的任何实用程序行为,我尝试用上面给出的一种方式封装它。

这样做的实践并不多。许多从事网页表单多年的人都是这么想的。

在我们相当大的应用程序中,我们创建了一个BaseController,但并没有真正看到将常见行为封装到其中的方法。

然而,最终我们通过覆盖基控制器

中的OnException方法,添加了一些通用代码来记录异常。

所以我认为你应该这样做:如果你看到可以封装的代码,就用。你可以在基控制器中创建私有方法,但是你不能在基控制器中创建公共操作方法。你只需要将代码封装在一个protected方法中,然后在你的具体控制器中需要一个单独的Action方法。