Ajaxver.2(四)--ASP.NETAJAX概述


  1)ASP.NET AJAX不仅仅局限于客户端使用,该框架中包含大量新的.NET类和服务器端控件,为开发人员提供了一个简单、无缝的ajax驱动的应用程序开发接口
  配置安装自己百度
  2)注册命名空间
  Type.registerNamespace("ProAjax"); //创建名为ProAjax的命名空间,如果要在此命名空间中创建新的命名空间,参数改为"ProAjax.Ch14"
  Type.isNamespace("ProAjax.Ch14"); //判断对象是否为命名空间,是返回true
  3)注册类
  需要执行三个步骤:
  ① 根据需要创建一个类
  ② 如需使用继承,则用InitializeBase()方法实例化此类
  ③ 使用registerClass()方法注册此类
  ProAjax.Ch14.Person=function(){
   ProAjax.Ch14.Person.initializeBase(this); //完成基类的初始化工作,成员为上下文中给出的实例,两参数,一为要初始化的对象,二为传给基类构造函数的参数数组,可空
  };
  ProAjax.Ch14.Person.registerClass("ProAjax.Ch12.Person"); //两参数,一为字符串表示的类全名,二为从哪个基类中继承,其他的为该类实现的接口
  Type.isClass(ProAjax.Ch14.Person); //判断类型或函数是否为类
  ProAjax.Ch14.Author.inheritsFron(ProAjax.Ch14.Person); //判断是否是另一个类的继承
  var oAuthor = new ProAjax.Ch14.Author();
  var fnConstructor = Object.getType(oAuthor); //返回用来创建某个特定对象的构造函数
  var bInherits=fnConstructor.inheritsFrom(ProAjax.Ch14.Person);
  alert(Object.getTypeName(oAuthor)); //返回某个对象的类的全名
  4)注册枚举
  ① 创建该类型
  ② 对prototype添加名-值对
  ③ 将该类型注册为一个枚举类型
  ProAjax.Ch14.Color=function(){};
  ProAjax.Ch14.Color.prototype={
   red:0xff0000,
   blue:0x0000ff,
   green:0x00ff00
  };
  ProAjax.Ch14.Color.registerEnum("ProAjax.Ch14.Color");
  5)注册接口
  ① 让构造函数抛出一个异常,因为接口不能被实例化
  ② 因为接口方法不能包含实现细节,因此每个方法都必须抛出一个异常
  ③ 注册接口
  ProAjax.Ch14.IAuthor=function(){
   throw Error.notImplemented();
  };
  ProAjax.Ch14.IAuthor.prototype={
   get_books:function(){
   var sTypeName=Object.getTypeName(this);
   throw Error.notImplemented(sTypeName+"does not"+"fully implement this interface");
   }
  };
  ProAjax.Ch14.IAuthor.registerInterface("ProAjax.Ch14.IAuthor");
  var author = new ProAjax.Ch14.Author();
  Object.getType(author).implementsInterface(ProAjax.Ch14.IAuthor); //判断某特定对象或类是否实现了某接口
  ProAjax.Ch14.IAuthor.isImplementedBy(author); //另一种判断方法
  6)使用控件
  每个控件的构造函数都能接受一个HTMLElement作为参数。当某元素和控件关联起来,这种关联就无法改变。如果要查询HTMLElement元素的值,除了getElementById外,还可用ASP.NET AJAX提供的$get()函数
  7)更新面板(Update Panel)控件
  <asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" />
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" Text="0" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button1" Text="Add More" OnClick="Button1_Click" runat="server" />
  ① ScriptManager 控件负责管理JS组件,部分页面展现以及ASP.NET AJAX页面的HTTP请求/响应操作,OnAsyncPostBackError处理异常;
  ② UpdatePanel 控件有三个属性,ChildrenASTriggers,布尔值,当子控件触发postback事件时,更新面板是否及时更新信息,默认true
  RenderMode,标明面板如何展现,block为用div显示,inline为用span展示
  UpdateMode,确定面板如何更新。always为每收到一个postback就更新;conditional为满足特定条件才更新,这里是点了Button1才更新;
  ③ ContentTemplate更新面板所更新的内容,可包含HTML及ASP.NET控件;
  ④ Triggers,触发器,能让更新面板刷新的其他控件的事件
  两种触发器,PostBackTrigger ,触发一个标准的postback事件,刷新整个页面,对文件长传之类的很有用,因为文件爱你无法异步上传,ControlID对应另一控件的ID
   AsyncPostBackTrigger,触发异步的postback事件,ControlID跟前者一样,EventName可选,让绑定控件的某特定事件来触发更新,否则所有事件都能触发更新。

  以下为对应的JS脚本:
  <script runat="server">
protected TextBox TextBox1;
   protected void Button1_Click(object sender, EventArgs e)
{
   long oldNumber = System.Convert.ToInt64(TextBox1.Text);
long newNumber = ++oldNumber;
TextBox1.Text = newNumber.ToString();
   }
  protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message;
}
</script>

评论: 0 | 引用: 0 | 查看次数: 39
发表评论
你没有权限发表留言!