__doPostBack簡單的使用方法

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

復制代碼代碼如下:

<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>?


以及兩個隱藏控件?

復制代碼代碼如下:


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





值得注意的是,_doPostPack的第一個參數是大小寫不敏感的??

細心的人會發現,在__doPostBack里,提交調用的是theform.submit(),這樣就導致對Form的onsubmit事件校驗失效了,幸好這個問題在asp.net?2.0已經修復了。這里提供一個替換的解決辦法,在Form的最下面插入下面的代碼,這段代碼在保證不管是不是render出來的頁面均有效??

復制代碼代碼如下:

<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>?

轉載于:https://www.cnblogs.com/abc123456/p/4553831.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273218.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單時隙靈敏度有什么影響_英國大學設計出低價開源單分子顯微鏡

低價單分子顯微鏡英國謝菲爾德大學的一個科學家和學生團隊設計并建造了一臺專業單分子顯微鏡&#xff0c;他們向外界分享了建造方法&#xff0c;以幫助世界各地的許多實驗室使用這種設備。這臺名為smfBox的顯微鏡能夠進行單分子測量&#xff0c;讓科學家一次只看一個分子&#…

安裝TokuDB引擎

前言&#xff1a;TokuDB 是一個高性能、支持事務處理的 MySQL 和 MariaDB 的存儲引擎。TokuDB 的主要特點是高壓縮比&#xff0c;高 INSERT 性能&#xff0c;支持大多數在線修改索引、添加字段,非常適合日志型應用場景&#xff08;只有insert&#xff0c;select&#xff0c;少u…

ul1977標準_UL 1977連接器認證知識

第一節、認識UL認證 和 CUL認證一&#xff0e;UL認證的一些標識:1. UL列名標志是最常用的 UL 標志。如果產品貼有這一標志&#xff0c;即表明 UL 認定該產品的代表性樣品符合 UL 的安全要求。2. UL 認可零部件標志以上都是UL實驗室列名&#xff0c;(從左至右)一種僅用于美國&…

(二)spring MVC配置

使用Maven添加依賴的jar包第一個還沒用上 剛開始沒加spring-context&#xff0c;Controller沒法用 web.xml配置 1. 配置DispatcherServlet <servlet><description>Spring MVC Servlet</description><servlet-name>springMVC</servlet-name>…

ubuntu安裝portainer_Docker【二】:Docker管理工具Portainer

本文目錄&#xff1a;1.前言2.Portainer介紹與安裝3.Portainer使用4.配置拼音搜索5.總結1、前言&#xff1a;系統環境&#xff1a; ubuntu16.04docker版本&#xff1a;1.12.6關于docker的安裝與常用命令使用&#xff0c;可以看&#xff1a;Docker【一】&#xff1a;Docker入門及…

練習作品13:電子試卷自動生成軟件

轉載于:https://www.cnblogs.com/plug/p/4558216.html

動力環境監控系統論文_機房動力環境監控系統說明

根據機房智能環境監控項目的具體要求&#xff0c;機房環境綜合監控系統分為動力監控系統(對機房內的常規動力設備&#xff0c;如發電機、配電柜、UPS、蓄電池、機柜等實時監控)、環境監控系統(對溫濕度、機房空調、漏水、新風系統等實時監控)和安全監控系統(對煙感傳感器等系統…

ceph 存儲 對比_分布式存儲系統 Curve

CURVE 是網易開源的高性能、高可用、高可靠分布式存儲系統&#xff0c;具有非常良好的擴展性。基于該存儲底座可以打造適用于不同應用場景的存儲系統&#xff0c;如塊存儲、對象存儲、云原生數據庫等。授權協議: Apache 2.0開發語言: C/C開發廠商&#xff1a;網易軟件類型&…

IOS添加pch預編譯文件

1.右鍵組名&#xff0c;New File->IOS->other選擇PCH文件 2.在Build Settings的搜索欄輸入prefix 3.找到Prefix Header 3.添加PCH文件&#xff0c;方法一&#xff1a;項目名/****.pch.(推薦) &#xff1b; 方法二&#xff1a;$(SRCROOT)/項目名/***.pch轉載于:https://w…

前端封裝接口彈出錯誤_項目實踐:SpringBoot三招組合拳,手把手教你打出優雅的后端接口...

前言一個后端接口大致分為四個部分組成&#xff1a;接口地址&#xff08;url&#xff09;、接口請求方式&#xff08;get、post等&#xff09;、請求數據&#xff08;request&#xff09;、響應數據&#xff08;response&#xff09;。如何構建這幾個部分每個公司要求都不同&am…

關于重寫equals()與hashCode()

在HashMap與HashSet中&#xff0c;是不允許元素重復的。 在判定時比較元素的hashCode()是否相等&#xff0c;equals()是否返回true&#xff0c;那么問題來了 這是一個Person類 public class Person { private String id; private String name; private Integer age; …

金算盤高手論壇資料中心_3D304期 菜鳥論壇精英PK專欄 速來圍觀!!

點上方“菜鳥選號論壇”→點右上角“...”→選“星標★”每日上午更新&#xff0c;星標置頂與大神不走散蘋果是置頂&#xff0c;安卓是星標 點擊"菜鳥選號論壇"關注我們論壇明星版塊&#xff0c;集全網各路高手之大乘&#xff0c;打造草根明星 展示舞臺。同時主要是為…

諸暨機器人餐廳價格_現場 | 一家嘗出“鍋氣”的餐廳 探店機器人餐廳

觀點地產網蔡瀾先生的書中曾說過&#xff0c;“食在廣東&#xff0c;其實是食在順德”&#xff0c;順德這座美食之都&#xff0c;滿足了對食物異常挑剔的廣東人的味蕾追求。最近&#xff0c;一家坐落“鳳城”順德的餐廳開業了。餐廳開業本身并沒什么稀奇&#xff0c;不過這是一…

VelocityTracker簡要

翻譯自&#xff1a;http://developer.android.com/reference/android/view/VelocityTracker.html參照自&#xff1a; http://blog.jrj.com.cn/4586793646,5298605a.html android.view.VelocityTracker主要用跟蹤觸摸屏事件&#xff08;flinging事件和其它gestures手勢事件&…

積木賽爾號機器人_賽爾號:譜尼三次敗北,經歷過被吊打、封印,一次比一次慘...

賽爾號&#xff1a;譜尼三次敗北&#xff0c;經歷過被吊打、封印&#xff0c;一次比一次慘。精靈類型的動漫層出不窮&#xff0c;在我們兒時看過精靈寶可夢、數碼寶貝等等作品。國內的動漫則是有賽爾號和洛克王國&#xff0c;相較而言還是賽爾號更加的出名一些&#xff0c;更加…

xenu工具介紹

Xenu Link Sleuth 也許是你所見過的最小但功能最強大的檢查網站死鏈接的軟件了。你可以打開一個本地網頁文件來檢查它的鏈接&#xff0c;也可以輸入任何網址來檢查。它可以分別列出網站 的活鏈接以及死鏈接&#xff0c;連轉向鏈接它都分析得一清二楚&#xff1b;支持多線程&…

安卓模擬器_exagear模擬器安卓模擬器

Exagear模擬器簡介讓Android 設備用戶重溫經典 PC 游戲&#xff0c;來自俄羅斯的初創公司 Eltechs發布了一款全新的 Android 游戲模擬器 ExaGear Strategies。該游戲模擬器的主要功能就是將經典的 PC 游戲帶到 Android 智能手機或平板電腦上來。公告1.exagear軟件和游戲&#x…

HBase 常用Shell命令

兩個月前使用過hbase&#xff0c;現在最基本的命令都淡忘了&#xff0c;留一個備查~ 進入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos認證&#xff0c;需要事先使用相應的keytab進行一下認證&#xff08;使用kinit命令&#xff09;&#xff0c;認證成功之后…

將Excle數據導入到數據庫

假如Excel中的數據如下&#xff1a; 數據庫建表如下&#xff1a; 其中Id為自增字段&#xff1a; 代碼&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.Web.UI;6 using System.Web.UI.WebControls;7 us…

click vue 重復調用_VUE防止多次點擊,重復請求

VUE防止多次點擊&#xff0c;重復請求1.添加自定義文件 preventReClick.jsimport Vue from vueconst preventReClick Vue.directive(preventReClick, {inserted: function (el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabled truesetTimeou…