建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

以Model为核心的表单设计器的思路

时间:2010-09-24 23:48来源:http://zhuqil.cnblogs.com 作者:朱祁林 点击:
在之前的文章中介绍过一些表单设计器的思路和想法。在上一篇文章:零代码平台实现中说到我要实现一个功能强大的表单设计工具。经过几天思考,觉得以Model为核心去实现表单设计器思路既简单也很清楚。这篇文章我将谈谈如何以Model为核心去实现表单设计器。

     在之前的文章中介绍过一些表单设计器的思路和想法。在上一篇文章:零代码平台实现中说到我要实现一个功能强大的表单设计工具。经过几天思考,觉得以Model为核心去实现表单设计器思路既简单也很清楚。这篇文章我将谈谈如何以Model为核心去实现表单设计器。

设计思路:

    之所以会我想到以Model为核心,主要借鉴Asp.net MVC框架。ASP.NET MVC中控制器向View提供Model。View将Model渲染成表单。有一点不好的是生成的View中夹杂了HTML和C#代码,没有了ASP.Net Web Form的用户控件,所以就不能去可视化拖拽了,看下面ASP.net MVC生成表单的两张图。

    简单的List页面:

 

    Detail页面:

    从上图中可以看出不存在控件,那就不能可视化的拖拽。

    我做这个设计器的目的之一就是解决这个不能拖拽的问题,先对比一下asp.net表单生成机制和我的表单设计器的机制:

    从上图可以看出两种机制是差不多的。

    mvc中有ModeL和ViewModel两个概念。Model是一般都固定不变的,编译之后就会存在dll,所以通过下面代码使用反射来生成表单。

1 System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
2 dlg.AutoUpgradeEnabled = false;
3 if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
4 {
5 string fileName = dlg.FileName;
6 txtPath.Text = fileName;
7 System.Reflection.Assembly ass;
8 Type[] types;
9 ass = System.Reflection.Assembly.LoadFile(fileName);//要绝对路径
10 //获取所以的实体类
11   types = ass.GetTypes();
12 foreach(Type type in types)
13 {
14 ListBoxItem li = new ListBoxItem();
15 li.Content = type.Namespace+"."+type.Name;
16 lbxModel.Items.Add(li);
17
18 }
19
20
21
22 }

     对于ViewModel,我计划先使用SQL语句生成ViewModel的结构和代码,然后生表单。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片