【Aspx应用开发平台教程】架构篇:解析微系统构件-传说中的Web表单设计器

  套个标题党:“江湖中有哥的传说,江湖中却没有哥的身影!”,没错,这篇文章就是介绍 在 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时,却忘记了:每一次的项目开发,我们仍然在重复造轮子!为什么不能做出可以重用的代码和系统呢?

 

  也许你不赞同我的观点,但是请记住:客户过去不会,现在不会,以后也不会,为你编写的代码买单!客户购买是可以使用的软件,是软件的使用价值!

 

 

posted @ 2010-10-13 08:24  大道无痕  阅读(3317)  评论(26编辑  收藏  举报