科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET编程入门随想之信客

ASP.NET编程入门随想之信客

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

基于WEB的分布式系统中,用户往往是通过提交表单,浏览器产生相应的HTTP POST请求来完成交互过程,这个过程称为回发(PostBack)。

作者:黎宇 来源:天极开发 2007年11月6日

关键字: Windows

  • 评论
  • 分享微博
  • 分享邮件
 ■ 行李 - 回发数据引发的服务器端事件

  "一次,村里一户人家的姑娘要出嫁,姑娘的父亲在上海谋生,托老信客带来两匹红绸。"

  除了依赖于用户操作引发事件外,我们时常还需要根据回发的用户数据,来修改相应控件的状态,从而引发事件。

  回发的客户端表单数据会被集中整理到包含数据名/值集的一个System.Collections.Specialized.NameValueCollection实例中,页面会利用UniqueID在控件树中寻找匹配控件,如果匹配控件实现接口IpostBackDataHandler,则调用LoadPostData方法更新状态并返回更新标识,RaisePostDataChangedEvent方法检查标识从而引发事件。下例为依赖于状态变化引发事件的自定义控件范例。拓展一下,可以更加灵活地使用这个事件机制,例如当用户输入特定数据时,也可以在此引发特定事件。

using System;
using System.Web;
using System.Web.UI;
using System.Collections.Specialized;

namespace essay {
 public class MyTextBox: Control, IPostBackDataHandler
 {
  //定义控件属性Text
  public String Text
  {
   get {return (String) ViewState["Text"];}
   set {ViewState["Text"] = value;}
  }
  //生成控件对应的HTML代码
  protected override void Render(HtmlTextWriter output)
  {
   writer.Write("<INPUT TYPE=text name=" + this.UniqueID + " Value='"+this.Text+"' />");
  }
  //定义TextChanged事件委托
  public event EventHandler TextChanged;
  //更新控件的Text状态并返回更新标识
  //参数NameValueCollection为回发数据集
  public virtual bool LoadPostData(string postDataKey, NameValueCollection values)
  {
   String presentValue = Text;
   String postedValue = values[postDataKey];
   if (!presentValue.Equals(postedValue))
   {
    Text = postedValue;
    return true;
   }
   return false;
  }
  //检查更新标识引发自定义事件TextChanged
  public virtual void RaisePostDataChangedEvent()
  {OnTextChanged(EventArgs.Empty);}
  //实现回调
  protected virtual void OnTextChanged(EventArgs e)
  {if (TextChanged != null)TextChanged(this,e);}
 }
}

  ■ 眼神 - 非回发事件与完整的控件执行生命周期

  "只要信客一回村,他家里总是人头济济。多数都不是来收发信、物的,只是来看个热闹。农民的眼光里,有羡慕,有嫉妒;比较得多了,也有轻蔑,有嘲笑。这些眼神,是千年故土对城市的探询。"

  以上两个事件皆与回发有直接关系,利用.NET的事件框架,我们可以在控件中的任何一个地方引发非回发事件。例如我们可以在页面中加入对用户透明的用户行为分析处理控件,窥视其它控件状态从而引发其特定的事件。

  至此,我们已经深入了解与控件执行相关的各种要素细节,最后,通过图11-2,我们小结一下控件完整的执行生命周期。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章