使用接口来管理共享的ASP.NET MVC视图之间的不同需求

时间:2018-12-20 00:44:34

标签: c# asp.net-mvc design-patterns

我正在开发一个Web应用程序,该应用程序能够生成多个HTML“报告”。以前,每个报告都有自己的控制器,模型和单独的视图,这些视图实现为“ .ascx”页面,当选择了各种报告时,这些页面会加载到公共的“ Display.aspx”页面中。

但是,随着该应用程序的开发,我们已经确定了一些报告页面之间的许多通用组件,即图表/标题页/某些免责声明,它们已分解为常见的ascx页,然后可以由给定的报表加载。如果这些通用页面是静态HTML,那将很简单,但是大多数都需要传递某些模型参数来生成页面,并且每个页面通常都需要不同的参数,这导致我现在面临的问题:

在这些报表具有多个公共字段的情况下,以前的开发人员选择使用同一模型。因此,所有这些公共视图和主报表本身都接收到一个对象,该对象可以包含所有共享视图所需的任何参数以及使用公共视图的任何报表参数。这导致了即使使用相对简单的报表,却杂乱无章地具有许多参数的对象。在大多数情况下,控制字段会将许多这些字段保留为未初始化状态,因为它们根本不是必需的。在此方法有效的同时,我觉得这并不是一种特别好的设计哲学,这使我提出以下疑问:

  1. 上述情况是否可以接受,并且
  2. 管理这些通用视图的更好的选择是什么?

我想出但想要一些反馈的是:

  • 每个通用视图都需要一个特定的界面;一个只具有生成它所需的字段。
  • 为每个报告创建唯一的模型,并使其实现所需的接口以支持特定报告使用的特定通用视图
  • 生成公共页面时,让.NET“升级”报告对象以获取必要的字段,但是在公共页面本身上,它正在处理一个更为通用的对象

但是这种方法有警告吗?还是在这种情况下更好/通常会做的事情?

0 个答案:

没有答案