最近在进行一个老系统的升级改造,原有系统基于Asp.Net Web Form,其中的很多功能是针对数据库表的CRUD操作,和基本查询,有大量的相似界面,也就是说,界面的功能高度相似,只是相关的数据库表不同,原来的系统采用Web Form的动态控件生成界面,界面的配置数据保存在xml文件中,相同类型的界面由同一个aspx动态生成。在aspx的Form_Init事件中根据传入的配置文件标识读取相应xml文件中的界面配置数据,动态创建控件生成界面。
我们要将该系统改造为基于Asp.Net MVC + Web Api的结构: 使用MVC初始化界面,界面初始化后,通过Ajax与后台的Web Api实现CRUD和查询操作。我们已经将CRUD和查询操作进行了封装,每个界面操作的功能基本类似,只是参数不同。我们这里不讨论Web Api的实现,只讨论前端的实现方式。
基本的思路是根据不同的页面类型,创建显示模型,显示模型文件保存在xml中,根据xml文件生成界面。这里我们有两个选择:1)采用Razor模板动态生成界面,这个方案中,每一类界面类型只需要一个视图文件cshtml,界面根据传入参数动态生成;2)采用T4模板或其它模板技术,预先生成显示界面的视图文件,这个方案中,每个界面是一个预先生成的cshtml。这两种方案各有利弊,我们将分别讨论。