[翻译]Chameleon介绍(4) : 表单控件

本文介绍了Chameleon表单控件如何实现如创建论坛帖子、编辑用户资料等社区功能。详细展示了ContactForm控件的配置及使用方法,并概述了Chameleon表单控件的关键属性和支持的子控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[原文]http://getben.com/archive/2007/01/12/introduction-to-chameleon-form-controls.aspx

这篇文章属于我的文章系列Chameleon介绍...

Chameleon表单控件实现了Community Server的表单功能,例如:创建论坛贴子,编辑用户资料,或注册用户账号。

Chameleon里的表单控件定义了实现表单所需的最少功能——它们像“胶水”一样,把一系列表单元素粘合在一起,执行一个操作。操作完成后,很多表单还提供了一种方式,让界面开发人员决定下一步要做什么。例如,博客控件ContactForm:

< CSBlog:ContactForm  runat ="server"  SubjectTextBoxId ="Subject"  NameTextBoxId ="Name"
 EmailTextBoxId ="Email"  MessageTextBoxId ="Body"  SubmitButtonId ="Submit" >
   
< SuccessActions >
      
< CSControl:SetVisibilityAction  runat ="server"  ControlIdsToShow ="SuccessMessage"   />
   
</ SuccessActions >
   
< FormTemplate >

      
< div >< CSControl:FormLabel  LabelForId ="Name"  runat ="server"
 ResourceName ="Weblog_ContactForm_Name"   /></ div >
      
< div >< asp:TextBox  id ="Name"  runat ="server"   /></ div >

      
< div >< CSControl:FormLabel  LabelForId ="Email"  runat ="server"
 ResourceName ="Weblog_ContactForm_Email"   /></ div >
      
< div >< asp:TextBox  id ="Email"  runat ="server"   /></ div >

      
< div >< CSControl:FormLabel  LabelForId ="Subject"  runat ="server"
 ResourceName ="Weblog_ContactForm_Subject"   /></ div >
      
< div >< asp:TextBox  id ="Subject"  runat ="server"   /></ div >         

      
< div >< CSControl:FormLabel  LabelForId ="Body"  runat ="server"
 ResourceName ="Weblog_ContactForm_Body"   /></ div >
      
< div >< asp:TextBox  id ="Body"  runat ="server"  TextMode ="MultiLine"   /></ div >

      
< div >
      
< asp:Button  id ="Submit"  runat ="server"  Text ="Send"   />
      
< CSControl:ResourceControl  runat ="Server"  id ="SuccessMessage"
 ResourceName ="Weblog_ContactForm_Sent"  Visible ="false"   />
      
</ div >

   
</ FormTemplate >
</ CSBlog:ContactForm >

定义了一个表单,允许浏览网站的人联系博客的所有者。ContactForm的属性指定了FormTemplate里的控件,它使用这些控件来实现表单必需的输入——主题,姓名,邮件,消息,以及提交。ContactForm自身提供了“连线”功能,使得这些表单元素执行联系博客所有者的任务。当表单成功处理后,内置属性SuccessActions定义了要执行的动作(动作控件将会在本系列稍后的一篇文章里讨论)。

Chameleon表单控件支持与单值控件相同的属性(ControlIdsToHideWhenNotVisible, ContainerId, CssClass, Tag, DisplayConditions, LeaderTemplate, TrailerTemplate, DataSource, and Attributes),同时还支持以下属性(从WrappedFormBase继承而来):

  1. ValidationGroup
    ValidationGroup是验证组的名字,会在验证表单的内容时使用。
  2. FormTemplate
    FormTemplate是一个内置属性,包含了作为表单内容输出的标签和控件。一般情况下,表单的子控件包含在FormTemplate里,但这并不是必须的。
  3. 子控件的ID
    每个表单支持指定用途的一系列子控件。对于支持的每个子控件,都暴露了一个属性,以期望的值/用途和控件的类型命名。

    并非所有子控件属性都必须被设置,然而,如果需要的控件ID未被指定(或不存在),表单控件将会抛出一个异常,解释哪些控件ID是必须的。
  4. 完成后的动作
    取决于表单的功能,与动作相关的内置属性会被暴露,以允许界面开发者定义一个或一些动作,在表单完成了特定功能后执行。

    大部分表单控件暴露了“SuccessActions”,在表单成功完成后(例如,当ContactForm成功地提交后)执行。如果一个表单有不止一个完成动作,它会为每种类型的完成动作,暴露一个“Actions”内置属性。类似地,如果表单没有完成动作,或它的完成动作是预定义的(例如,SearchForm总是把用户转到搜索结果页面),它不会支持任何界面开发者定义的“Actions”。
  5. SubFormIDs
    少数几个Chameleon表单控件支持子表单。Chameleon子表单控件(继承于WrappedSubFormBase)可以参与表单生命周期,并且扩展现有表单的功能。例如,CreateEditForumPostForm支持子表单,在默认的界面中,它使用了TagsSubForm,AttachmentSubForm,VideoSubForm,PollSubForm,以及InkSubForm,给基本的论坛发贴表单添加标签,附件,视频,投票,以及Ink(各自添加一种功能)等功能。

    子表单使得表单更加简单——CreateEditForumPostForm实现了发表论坛贴子所需要的基本功能——同时允许在界面复用的基础上,添加新的,自定义的功能。例如,界面开发者可以使用投票子表单或视频子表单的自定义实现,而不需要编程重写整个CreateEditForumPostForm控件。类似地,界面开发者可以给表单添加一个新的子表单,比如添加一个允许用户选择贴子背景纹理的子表单。

Chameleon表单控件在功能上类似Community Server 2.1及更早版本里的themed controls。它们附加到预定义的子控件上,并使用这些子控件执行特定的功能。然而,不像Community Server 2.1及更早版本,Chameleon表单控件暴露了它所支持的子控件的列表(通过子控件ID属性),允许界面开发人员定义控件ID,并且允许界面开发者自定义完成动作(通过动作控件)以及表单功能(通过子表单)。

如果你有关于Chameleon表单控件的问题(或任何有关Chameleon的问题),请通过我的联系表单或添加评论告诉我。我会在这一系列的最后一篇文章里回答它们。

这个系列的下一篇文章里,我会讨论条件控件

转载于:https://www.cnblogs.com/deerchao/articles/736020.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值