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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Asp.Net前臺呼叫後臺變數ASP.NET變數
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——理論篇ASP.NETHTTP
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——實踐篇(一)ASP.NETHTTP
- 由ASP.NET所謂前臺呼叫後臺、後臺呼叫前臺想到HTTP——實踐篇(二)ASP.NETHTTP
- .NET後臺呼叫JS前臺JS
- JQuery呼叫asp.net的後臺方法jQueryASP.NET
- C#後臺呼叫前臺javascript的五種方法C#JavaScript
- vs2008 ASP.NET Web應用程式介面呼叫後臺函式ASP.NETWeb函式
- js前臺如何使用後臺返回的資料JS
- GAT專案前臺到後臺
- linux程式前臺-後臺執行Linux
- HTML直接呼叫REST後臺HTMLREST
- GWT1.7學習之後臺傳送pojo到前臺頁面.RPC呼叫POJORPC
- asp.net點選鍵盤enter鍵,呼叫按鈕點選事件函式ASP.NET事件函式
- 使用 Laravel5.7 許可權管理系統後臺及前後臺使用者登入Laravel
- const放在函式前和放在函式後函式
- C# 跨平臺呼叫C++的函式指標C#C++函式指標
- SpringMVC後臺接受前臺傳值的方法SpringMVC
- Laravel前後臺共享資料Laravel
- ASP.NET Core CMS管理後臺ASP.NET
- asp.net防止重新整理重新提交觸發後臺事件的方法ASP.NET事件
- 2.0.0安裝以後為什麼進後臺前臺都是空白?
- ASP.NET 多語言的實現(後臺訊息+前臺訊息+頁面自動繫結)ASP.NET
- json前後臺傳值薦JSON
- 判斷當前應用程式處於前臺還是後臺 ANDROIDAndroid
- 微信小程式 部署(後臺是springboot專案 前後臺分流)微信小程式Spring Boot
- iOS APP各種狀態(進入後臺,前臺等)iOSAPP
- 系統前臺後臺是否應該分離(包括部署)
- [轉]php中使用ignore_user_abort()函式後,如何停止後臺執行的程式?PHP函式
- ASP.NET 網站後臺任務ASP.NET網站
- 使用rownum減少函式呼叫函式
- ASP.NET Page函式呼叫順序及解釋ASP.NET函式
- Linux任務的前後臺管理Linux
- SAP Emarsys 的前後臺技術棧
- Linux 程式前後臺切換|管理Linux
- 資訊系統前後臺功能分工
- 分頁實現前臺後臺不同效果,分頁類引入
- 長連線在後臺和前臺之間的互動