国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

關(guān)于前臺調(diào)用后臺事件__doPostBack函數(shù)

2024-07-10 13:14:31
字體:
供稿:網(wǎng)友
這里需要提一下的是,asp.net編程提供了服務(wù)端控件和客戶端控件的說法,其實(shí)還是脫離不了HTML的本質(zhì),客戶端和服務(wù)端需要交互必須要提交,提交有兩種方式get和post,get就是通過向服務(wù)端發(fā)送連接地址,服務(wù)端通過地址的參數(shù)來獲得信息的,一般這些參數(shù)都是明文,能在瀏覽器地址欄看到。而post是通過表單的input等元素提交到服務(wù)端的頁面的,這些數(shù)據(jù)一般是看不到的。asp.net的服務(wù)端控件其實(shí)就是對一般的HTML控件做了個包裝,大體是通過隱藏控件提供控制的參數(shù)的。 
這里介紹一個常用的函數(shù)_doPostBack,這個函數(shù)如果如果是ASP.Net render出來的頁面就是自動產(chǎn)生這個函數(shù),比如有帶autopostback屬性的控件,且其屬性為true的頁面,帶編輯列的datagrid頁面。 
__doPostBack是通過__EVENTTARGET,__EVENTARGUMENT兩個隱藏控件向服務(wù)端發(fā)送控制信息的,__EVENTTARGET為要調(diào)用控件的名稱,如果要調(diào)用的控件是子控件,用''$'或':'分割父控件:子控件,__EVENTARGUMENT是調(diào)用事件時的參數(shù) 
下面演示下如何調(diào)用后臺事件: 
1.新建工程 
2.拖入一個服務(wù)端Button1,一個DropDownList1和一個客戶端Button 
3.設(shè)置DropDownList1的AutoPostBack屬性為True,Button1的Visible為False 
4.雙擊Button1,在事件里寫下Response.Write("hello:" ); 
5.頁面的HTML里找到客戶端Button,寫入onclick="__doPostBack('Button1','')" 
6.編譯,運(yùn)行,點(diǎn)擊Button是不是出現(xiàn)了"Hello" 
7.查看源代碼,發(fā)現(xiàn)里面多了下面行 
復(fù)制代碼代碼如下:

<script language="javascript"> 
<!-- 
function __doPostBack(eventTarget, eventArgument) { 
var theform; 
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) { 
theform = document.forms["Form1"]; 

else { 
theform = document.Form1; 

theform.__EVENTTARGET.value = eventTarget.split("$").join(":"); 
theform.__EVENTARGUMENT.value = eventArgument; 
theform.submit(); 

// --> 
</script> 

以及兩個隱藏控件 
復(fù)制代碼代碼如下:


<input type="hidden" name="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" value="" /> 




值得注意的是,_doPostPack的第一個參數(shù)是大小寫不敏感的 

細(xì)心的人會發(fā)現(xiàn),在__doPostBack里,提交調(diào)用的是theform.submit(),這樣就導(dǎo)致對Form的onsubmit事件校驗(yàn)失效了,幸好這個問題在asp.net 2.0已經(jīng)修復(fù)了。這里提供一個替換的解決辦法,在Form的最下面插入下面的代碼,這段代碼在保證不管是不是render出來的頁面均有效 
復(fù)制代碼代碼如下:

<script language="javascript"> 
<!-- 
function __doPostBack_Ex(eventTarget, eventArgument) 

var theform; 
if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) { 
theform = document.forms[0]; 

else { 
theform = document.forms[0]; 


if(!theform.__EVENTTARGET) 

theform.appendChild(document.createElement("<input type='hidden' name='__EVENTTARGET'>")); 


if(!theform.__EVENTARGUMENT) 

theform.appendChild(document.createElement("<input type='hidden' name='__EVENTARGUMENT'>")); 


theform.__EVENTTARGET.value = eventTarget.split("$").join(":"); 
theform.__EVENTARGUMENT.value = eventArgument; 
if ((typeof(theform.onsubmit) == "function")) 

if(theform.onsubmit()!=false) 

theform.submit(); 


else 

theform.submit(); 


function __doPostBack(eventTarget, eventArgument) 

__doPostBack_Ex(eventTarget, eventArgument); 




// --> 
</script> 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 腾冲县| 五常市| 平遥县| 聂荣县| 新巴尔虎左旗| 达拉特旗| 德阳市| 铜山县| 泾川县| 镇原县| 天门市| 瑞安市| 盱眙县| 诏安县| 蒙阴县| 突泉县| 南开区| 遂川县| 安陆市| 泊头市| 秦皇岛市| 清丰县| 隆回县| 鄄城县| 青田县| 吉木萨尔县| 长垣县| 吕梁市| 洪湖市| 南和县| 松潘县| 上杭县| 罗田县| 黄平县| 侯马市| 衢州市| 宝鸡市| 云阳县| 徐州市| 武陟县| 万全县|