我们正在将应用程序迁移到.NET。其中一个主要目标是允许每个客户端修改应用程序,但不允许修改源代码。我们通过编程到接口并使用依赖性解析器(具有覆盖基本注册的选项)和MEF来解决核心框架中的问题。
现在谈到视图(客户端看到的UI),模板似乎是静态的,如果客户端想要在屏幕上添加新字段,那么他们似乎需要修改视图本身。
我能想到的唯一两件事就是修改viewengine的搜索路径。这将允许获取基础的副本并对其进行更改。不是很喜欢这个,因为它是代码的副本。
另一方面,我们现在正在做的是,我们创建一个类,它是输出HTML的其他对象的容器。基本上我们有一个PageObject,LabelObject,InputObject..ect,我们可以调用它们并输出HTML。由于它们是类,我们可以使用与给出切片的其余应用相同的方法。走这条路线我们真的没有使用viewengine进行渲染,只是用于组合所有部分视图。看起来很笨重。
有没有不同的方法来实现这个目标,或者我可以使用不同的视图引擎来实现允许客户定制而不触及基本视图的目标?我知道HTML不是一个对象,但是在处理HTML和允许自定义时,ASP.NET WebForms和ASP.NET MVC之间似乎必然会有一些东西。
答案 0 :(得分:2)
我会创建一个强类型的局部视图或模板(基于需求的DisplayTemplate或EditorTemplate),其@model
是作为输入和标签呈现的东西的集合。允许客户端从持久化集合中添加/删除项目(即在数据库中),并使用内置的ViewEngine解决您的问题。