[翻译]Chameleon介绍(6) : 动作控件

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


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

动作控件定义了单个功能或行为,由其它Chameleon控件在配置的事件发生时调用。

动作控件通常使用于当Chameleon表单控件处理完成了一个事件,比如博客联系表单提交成功。例如:

<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>
使用<CSControl:SetVisibilityAction />动作控件来声明,当<CSBlog:ContactForm />提交成功后,以"SuccessMessage"为ID的控件的Visibility属性应该设为真。

 

Community Server 2007里定义了很多动作控件,也可以轻松地定义新的动作控件(所有动作控件继承于ActionBase)。已有的动作控件包括:

  1. ExecuteScriptAction (<CSControl:ExecuteScriptAction />)
    ExecuteScriptAction会运行由Script属性指定的JavaScript脚本。

  2. GoToCurrentContentAction (<CSControl:GoToCurrentContentAction />)
    如果在当前上下文中存在内容对象的话,GoToCurrentContentAction会导航到当前内容对象。

  3. GoToCurrentPostAction (<CSControl:GoToCurrentPostAction />)
    如果当前上下文中存在贴子的话,GoToCurrentPostAction会导航到当前的贴子(Post)。

  4. GoToModifiedUrlAction (<CSControl:GoToModifiedUrlAction />)
    GoToModifiedUrlAction会应用指定的查询字符串(QueryStringModification属性指定)及目标更改(TargetLocaitonModification属性指定)到当前URL,并导航到更改后的结果URL。

  5. GoToReferralUrlAction (<CSControl:GoToReferralUrlAction />)
    如果查询字符串里声明了引用URL的话,GoToReferralUrlAction会导航到该URL。

  6. GoToSiteUrlAction (<CSControl:GoToSiteUrlAction />)
    GoToSiteUrlAction会导航到UrlName指定的SiteUrls.config文件里定义的Url。

  7. SetVisibilityAction (<CSControl:SetVisibilityAction />)
    SetVisibilityAction会设置ControlIdsToShow属性指定的控件为可见(Visible=ture)并且设置ControlIdsToHide属性指定的控件为不可见(Visible=false)。两个属性里的列表都用逗号分隔。

  8. CustomAction (<CSControl:CustomAction />)
    CustomAction通过提供CustomEvent事件,添加了基于代码的动作。这个事件可以用来实现内联代码。CustomEvent为事件处理器传入了执行此事件的父控件的引用,以及父控件的参数(与具体的控件有关)。例如:
    <script runat="server" language="C#">
    protected void MyCustomEventHandler(System.Web.UI.Control sender, object parameter)
    {
       // custom code here
    }
    </script>

    <CSControl:CustomAction runat="server" CustomEvent="MyCustomEventHandler" />
    会执行定义在页面上的MyCustomEventHandler方法里的自定义代码。

  9. Actions (<CSControl:Actions />)
    Actions用于执行一系列的子动作。上面示例中<CSBlog:ContactForm />的内置属性"SuccessActions"就是一个Actions控件。

    注意,Actions里可以使用多于一个运作控件。动作以它们定义的顺序执行,因此,下面的例子:

    <SuccessActions>
       
    <CSControl:GoToReferralUrlAction runat="server" />
       
    <CSControl:SetVisibilityAction runat="server" ControlIdsToShow="SuccessMessage" />
    </SuccessActions>
    会首先试图导航到查询字符串里指定的引用URL。如果没有定义引用URL,"SuccessMessage"控件会显示。

     

动作控件提供了一种简单的机制允许界面开发者自定义表单的行为。界面开发者现在可以根据他们界面的需要而实现自定义的导航和通知行为。

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

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

posted on   deerchao  阅读(490)  评论(1编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示