7

我们正在将我们的应用程序迁移到 .NET。主要目标之一是允许修改每个客户端的应用程序,但不允许修改源代码。我们通过对接口进行编程并使用依赖解析器(具有覆盖基本注册的选项)和 MEF 在核心框架中解决了这个问题。

现在,当涉及到视图(客户端看到的 UI)时,模板看起来是静态的,如果客户端想要在屏幕上添加一个新字段,他们似乎需要修改视图本身。

我能想到的唯一两件事就是修改viewengine的搜索路径。这将允许复制基础并获取对它的更改。不是很喜欢这个,因为它是代码的副本。

另一种方式,我们现在正在做的是,我们创建一个类,它是输出 HTML 的其他对象的容器。基本上我们有一个 PageObject、LabelObject、InputObject..ect,我们可以调用它们来渲染和输出 HTML。因为它们是类,所以我们可以使用与其他应用相同的方法来给出分片。走这条路,我们实际上并没有使用视图引擎进行渲染,而只是为了组合所有的局部视图。似乎有点笨拙。

是否有不同的方法来实现这个目标,或者我可以使用不同的视图引擎来实现在不触及基本视图的情况下为客户定制的目标?我知道 HTML 不是一个对象,但在处理 HTML 并允许自定义时,似乎在 ASP.NET WebForms 和 ASP.NET MVC 之间必须有一些东西。

4

1 回答 1

2

我会创建一个强类型的局部视图或模板(DisplayTemplate 或 EditorTemplate 基于要求),它@model是作为输入和标签呈现的事物的集合。允许客户端添加/删除持久集合中的项目(即在数据库中),您的问题可以使用内置的 ViewEngine 解决。

于 2013-03-07T15:08:37.087 回答