【Aspx应用开发平台教程】架构篇:解析微系统构件-传说中的Web表单设计器
时间:2010-10-13 来源:大道无痕
套个标题党:“江湖中有哥的传说,江湖中却没有哥的身影!”,没错,这篇文章就是介绍 在 Aspx应用开发平台 微系统构件的核心组成:传说中的 Web表单设计器。
为什么要先从表单设计器开始呢? 自从我们的网站 http://www.doasp.cn/ 上线以来,不断有同仁给我们提意见,会员注册页面:http://www.doasp.cn/Registr.aspx 做得不够好,有很多bug,好吧,今天我就结合这个页面来分析 Web表单设计器(当然,这个页面是用 Web表单设计器 设计 )
注册页面的主要功能:
- 检查注册电子邮件是否注册过了?
- 检查各个输入项目的数据是否符合要求?并给出相应的提示,
- 所在地区的省市两级联动输入框。
- 检查验证码是否正确?
- 提取输入数据,提交给注册对象处理。
- 注册成功后,向注册电子邮件发送一封激活电子邮件。
“麻雀虽小,五脏俱全”,这样一个看似简单的页面,就需要Jquery、Ajax等诸多知识点,那我们的系统是如何实现的呢?
注册页面代码 namespace AspxWork.MemberHelper.Controls
{
using AspxWork.FormHelper.Control;
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebControlLibrary;
using System.Data;
/// <summary>
/// 会员注册控件
/// </summary>
public class RegistrControl : AspxWork.FormHelper.Control.SkinControl
{
private Button ButtonYes;
public RegistrControl()
{
base.ControlName = "RegistrControl";
IsSet = true;
base.Type = Edit_Types.Edit;
base.Key = Globals.UserId;
if (base.SkinFilename == null)
{
base.SkinFilename = "/Skins/RegistrControl.ascx";
}
}
private void ButtonYes_Click(object sender, EventArgs e)
{
//验证数据
if (!this.ControlContainer.Validate()) return;
string[] messages;
bool isOK = true;
try
{
DataRow row = ControlContainer.Read();
RegistrHandler.Current.Registr(row);
messages = new string[2];
messages[0] = "您的注册信息已经成功提交!";
messages[1] = "系统已经将验证邮件发送到您的注册邮箱,请接收激活您的注册账户!";
}
catch (Exception error)
{
messages = new string[1];
messages[0] = error.Message;
isOK = false;
}
Message.ShowMessageBox("保存信息", messages, isOK);
}
protected override void InitializeSkin(Control skin)
{
this.ButtonYes = (Button) this.FindControl("ButtonYes");
this.ButtonYes.Click += new EventHandler(this.ButtonYes_Click);
base.InitializeSkin(skin);
}
}
}
整个注册控件的核心代码两行就完成了,是不是简单到“令人发指”的程度了?
那控件的页面代码呢?
控件页面 <table align=center>
<tr>
<td >
<div class="out" >
<div class="in ltin tpin">
<FormControl:ControlContainer ID="ControlContainer" runat=server></FormControl:ControlContainer>
</div>
</div>
</td>
</tr>
<tr>
<td align=center>
<asp:Button id="ButtonYes" runat=server Text="提交" Width="80px" CssClass="submit" />
</td>
</tr>
<tr>
<td>
<asp:validationsummary id="ValidationSummary" runat="server" ShowSummary=true ></asp:validationsummary></TD>
</tr>
</table>
既然是用表单设计器设计的控件,你当然找不到任何设计代码。
进入Aspx开发平台的管理后台,打开 【用户控件管理】菜单,我们看到了 用表单设计器设计的注册控件的庐山真面目。
表单设计器设计教程视频:http://www.doasp.cn/demo/Form.htm
与传统拖动控件设计窗体和控件方法相比,表单具有自动绑定和获取数据的功能,你可以任意定义设置表单控件的绑定字段和控件类型:
通过控件验证设置,设置控件客户端验证JS和服务器数据验证方法,创建表单时,自动生成相应的JS验证代码。
我们选用了 jQuery formValidator表单验证插件作为客户端验证,在此特别感谢作者猫冬:http://wzmaodong.cnblogs.com/
在 Aspx应用开发平台 中,表单设计器的主要用于:
- 所有微系统构件的编辑页面 都是使用 表单设计器 设计的!
- 采用 表单设计器 设计的用户控件,取代了传统的用户控件设计方式,比如 微系统构件的设计器就是用类似的用户控件组合而成的。
不难看出,表单设计器 大大缩短和简化设计和编码工作量,在用户需求变更,设计变化时,可实时修改表单设置,“即改即用”。
此外通过【表单控件类型】管理模块,可以对表单控件类型进行管理,扩展表单控件类型,比如:
在表单插入Office文档的Office控件。
更多的表单设计器功能体验,可以在我们的网站 http://www.doasp.cn/ 下载体验。
至于在项目中运用表单设计器能带来什么好处,我想任何一个有一年以上项目开发经验的程序员都可以总结出来,大家不妨统计一下自己做过的项目中,有多少表单,需要编写多少代码,需要多少时间和工作量就清楚了。
在结束本文之前,插两句题外话,这两天园中里有两篇关于数据验证的博文比较火,浏览量和回复很多,这让我觉得很诧异!因为 猫冬同学的jQuery formValidator表单验证插件在2008年就已经发布了,我们在项目中都使用很长时间了。对于已经有非常成熟解决方案的领域,大家有那么大的热情关注,有必要吗?
也许,当我们热衷于微软的一个个新技术,热衷于从WebForm升级到MVC时,却忘记了:每一次的项目开发,我们仍然在重复造轮子!为什么不能做出可以重用的代码和系统呢?
也许你不赞同我的观点,但是请记住:客户过去不会,现在不会,以后也不会,为你编写的代码买单!客户购买是可以使用的软件,是软件的使用价值!