ASP.NET前臺使用__doPostBack函式呼叫後臺事件
ASP.NET前臺使用__doPostBack函式呼叫後臺事件
這裡需要提一下的是,asp.net編 程提供了服務端控制元件和客戶端控制元件的說法,其實還是脫離不了HTML的本質,客戶端和服務端需要互動必須要提交,提交有兩種方式get和post,get就 是通過向服務端傳送連線地址,服務端通過地址的引數來獲得資訊的,一般這些引數都是明文,能在瀏覽器位址列看到。而post是通過表單的input等元素 提交到服務端的頁面的,這些資料一般是看不到的。asp.net的服務端控制元件其實就是對一般的HTML控制元件做了個包裝,大體是通過隱藏控制元件提供控制的引數的。
這裡介紹一個常用的函式_doPostBack,這個函式如果如果是ASP.Net render出來的頁面就是自動產生這個函式,比如有帶autopostback屬性的控制元件,且其屬性為true的頁面,帶列的datagrid頁面。
__doPostBack
是通過__EVENTTARGET,__EVENTARGUMENT兩個隱藏控制元件向服務端傳送控制資訊的,__EVENTTARGET為要呼叫控制元件的名
稱,如果要呼叫的控制元件是子控制元件,用''$'或':'分割父控制元件:子控制元件,__EVENTARGUMENT是呼叫事件時的引數
頁面的HTML裡找到客戶端Button,寫入
onclick="__doPostBack('Button1','')"
<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();
}
// -->
以及兩個隱藏控制元件
值得注意的是,_doPostPack的第一個引數是大小寫不敏感的。細心的人會發現,在__doPostBack裡,提交呼叫的是 theform.submit(),這樣就導致對Form的onsubmit事件校驗失效了,幸好這個問題在asp.net 2.0已經修復了。這裡提供一個替換的解決辦法,在Form的最下面插入下面的程式碼,這段程式碼在保證不管是不是render出來的頁面均有效
<!--
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(""));
}
if(!theform.__EVENTARGUMENT)
{
theform.appendChild(document.createElement(""));
}
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);
}
}
// -->
示例:
前臺:
class="tb_linkbtn" id="lbtnReturn" href="javascript.:__doPostBack('lbtnTest','')">測試
後臺:
if(Request["__EVENTTARGET" ]=="lbtnTes")
{
Response.Write("連結點選的PostBack");
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17140602/viewspace-609490/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解linux後臺、前臺執行程序Linux行程
- ASP.NET Core CMS管理後臺ASP.NET
- MYSQL事件使用 日期函式MySql事件函式
- 使用 Laravel5.7 許可權管理系統後臺及前後臺使用者登入Laravel
- 網站後臺模板前臺修改?網站後臺的介面如何修改?網站
- pbootcms後臺可以開啟前臺打不開boot
- Laravel前後臺共享資料Laravel
- 使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式JavaCloudREM函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- 微信小程式 部署(後臺是springboot專案 前後臺分流)微信小程式Spring Boot
- 2.0.0安裝以後為什麼進後臺前臺都是空白?
- js 使用 DotNetObjectReference 呼叫 c# 函式JSObjectC#函式
- 《秦殤》的臺前與幕後
- Linux任務的前後臺管理Linux
- 解決SpringBoot在後臺接收前臺傳遞物件方式Spring Boot物件
- [提問交流]後臺安裝好外掛,前臺如何呼叫,感謝幫忙,祝大家2015年快樂
- 子函式呼叫函式
- 函式呼叫棧函式
- 使用Excel呼叫ABAP系統的函式Excel函式
- 如何使用python super函式呼叫父類?Python函式
- SAP Emarsys 的前後臺技術棧
- spring的前後臺資料傳輸。Spring
- 分頁實現前臺後臺不同效果,分頁類引入
- workman + Laravel auth 實現前後臺使用者實時聊天Laravel
- [提問交流]onethink怎麼授權前臺註冊使用者為後臺管理員
- Tp6 資料庫管理工具,生成前後臺CRUD頁面,直接作為後臺頁面使用資料庫
- 前臺呼叫下拉選單框值(列舉欄位)
- 前後臺分離之資料模擬
- ABAP Development Tool前後臺互動的原理dev
- 外部函式的呼叫函式
- gdb 如何呼叫函式?函式
- C程式函式呼叫&系統呼叫C程式函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- PostgreSQL函式裡呼叫函式(SETOF + RETURN QUERY)SQL函式
- 普通函式與函式模板呼叫規則函式
- 【譯】理解Javascript函式執行—呼叫棧、事件迴圈、任務等JavaScript函式事件
- 基於 Hyperf 開發的前後分離管理後臺
- [提問交流]求助,後臺跳轉至前臺,如何實現,謝謝
- 仿掘金前臺 vue 服務端渲染(ssr)後臺 react (spa) 後臺服務是 koa 的一個專案Vue服務端React