学习ajax (二)(updatepanel 服务器端)

前端之家收集整理的这篇文章主要介绍了学习ajax (二)(updatepanel 服务器端)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

学习ajax (二)(updatepanel 服务器端)

updatepanel 服务器端

基本属性

RenserMode属性

用一个元素来圈出一个区域

-Block使用div来包含,-Inline使用span来包含

UpdateMode 更新的条件

-Aways是所有的某次异步的postback更新

-Conditional是满足一定条件更新

尽可能用Conditional 因为Aways是所有的异步postback都会产生刷新

ChildreAsTriggers bool属性

-ChildreAsTriggers为true表示如一个异步的postback由某个内部一个控件引发,updatepanel会产生更新

Triggers

指定<ContentTemplate>外部控件产生postback回发就会跟新updatepanel里面数据,注意外部更新不会让UpdateProgress显示出来

-AsyncPostBackTrigger 指定一个控件来回发

-PostBackTrigger 引发一个传统的刷新,即整个页面刷新

UpdatePanel控件

Update方法:强制某个updatePanel进行异步更新

IsInPartialRendering:判断UpdatePanel控件是否在输出过程

ScriptManager控件

GetCurrent 静态方法:获得当前页面上的ScriptManager

对象

IsInAsyncPostBack:是否在部分回发过程中

RegisterAsyncPostBackControl:指定某控件为异步PostBack控件

RegisterPostBackControl:指定是传统PostBack控件

UpdateProgress控件认识

DynamicLayout属性

隐藏时是否占位,默认为true

DisplayAfter属性:延迟多少时间后显示,单位为毫秒,默认500

AssociatedUpdatePanellD属性

关联UpdatePanelID,默认为null,如果没有指定的话,任何一个updatepanel提交它的内容就会显示出来,关联的话,在更新时候就只会显示出来它

这里有一个局限性,就是在updatepanel内部一个控件触发刷新才会显示出来,外面控件触发回发刷新是不显示

Timer控件

定期的更新

Interval属性:更新时间间隔,单位为毫秒,默认值为60000.

Tick事件:响应这个时间做一些事情

Validators控件

注意一下vs2005的Validators控件不支持asp.net ajax,但是vs2008支持

asp.net脚本注册

特别推荐不要用respones.write输出脚本,这样会破坏结构,最好用下面的方法调出脚本

ClientScriptManager cs=this.ClientScript;

cs.RegisterStartupscript(this.GetType(),”key”,”<script>alert(‘弹出对话框’);</script>”

在异步更新的环境中注册脚本

使用ScriptManager对应的静态方法

方法可以用来完全替换原有方法

在非异步回送环境中使用ClientScriptManager的对应方法进行注册

ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"updatepanel1","<script>alert('您好') </script>",false);

只用当更新之后才会出现(每次注册的脚本不一定会出现)

ScriptManager.RegisterStartupScript(this.Page,false);

保证他会输出

错误处理

服务器端ScriptManager设置

AllowCustomErrorsRedirect属性:遇到错误是否自动根据web.config中的设置跳转,默认值为true

AsyncPostBackError事件:异步刷新中出现错误触发的事件

AsyncostBackErrorMessage属性:客户端接受到的错误信息

客户端编程

响应PaggeREquestManager的endRequest事件

将errorHandled属性设置为true.

在客户端处理错误,不需要在服务器端跳转

<script>

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender,e)

{

e.set_errorHandled(true);

$get("error").innerHTML = "Sorry,an error has occurred: " + e.get_error().message;

setTimeout(function(){ $get("error").innerHTML = ""; },3000);

});

</script>

传统的PostBack过程

Submit将数据post到服务器端

init

Load State

Process PostBack

Load

PostBack Events

Save state

PreRender

Render(输出)

Upload

异步刷新

Submint 数据被PageRequestManager截获了并进行判断是传统的提交还是异步的提交

如果是异步提交(From+Header)

服务器端还是一个完整的页面周期

异步提交会在Header放置一个特殊标记

在Render会使用异步刷新的内容

实现原理简要分析

请求的内容没有任何减少,反而增加了一些数据(可以忽略不计)

尽可能少客户端接受到数据

简单实现原理分析

异步更新被调用的条件

UpdateMode为Always

AsyncPostBackTrigger条件被满足

Update被调用

ASP.NET 通过调用两个函数($_onFormSubmit,$__dopostback)来提交

原文链接:https://www.f2er.com/ajax/165985.html

猜你在找的Ajax相关文章