來源:互聯網網民 2008-09-09 07:29:14
評論可以用以下變通的方法實現用JavaScript調用服務器端的事件方法
2 1、增加如下JavaScript方法
3 這個就是將Asp.Net 中生成的腳本Copy過來,嘿嘿,很賊哦。
4 function __doPostBack(eventTarget, eventArgument)
5 {
6 var theform;
7 if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
8 {
9 theform = document.Form1;
10 }
11 else
12 {
13 theform = document.forms["Form1"];
14 }
15 theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
16 theform.__EVENTARGUMENT.value = eventArgument;
17 theform.submit();
18 }
19
20 //以下就是要從JavaScript中通知服務器端,你該幹活了
21 function NotifyServer()
22 {
23 //.可以做一些設置,判斷
24
25 Button1是服務器控件的ID,'abc' 可以自己設置,這個我需要給服務器傳遞一些消息數據,平時直接用'即可
26 __doPostBack('Button1','abc')
27 }
28
29 2、aspx 頁面
30 要增加 以下兩個隱藏字段
31 <input type="hidden" name="__EVENTTARGET">
32 <input type="hidden" name="__EVENTARGUMENT">
33
34 <asp:Button id="Button1" runat="server" Text="Button" Visible="False"></asp:Button>
35
36 這裏就是要執行Button1 的後台代碼,同時要將他的Visible 設置成 False ,(雖然資料說 不能將Enable 設置成False,但是我試了一下 將Enabled設置成False還是可以用的
37
38 同時增加一個
39 <input type="button" id="but" onclick="NotifyServer()" value="ServerExecute"> ,執行服務器代碼
40
41 3、aspx.vb 頁面代碼
42 Response.Write("alert('" & Request("__EVENTARGUMENT").ToString() & "'"); ")
43 這裏的Request("__EVENTARGUMENT").ToString() 就是'abc'的內容
44
45 4、注意事項
46 用此種方法,頁面中不能有AutoPost=True 的服務器控件,因爲有AutoPost=True的控件的頁面系統會自動生成以上的代碼(2個hidden控件,還有一個__doPostBack函數),如果你的頁面中 有AutoPost=True的服務器控件,那麽你不需要加以上的代碼(2個hidden控件,還有一個__doPostBack函數),直接用__doPostBack函數吧
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
可以用以下變通的方法實現用JavaScript調用服務器端的事件方法
2 1、增加如下JavaScript方法
3 這個就是將Asp.Net 中生成的腳本Copy過來,嘿嘿,很賊哦。
4 function __doPostBack(eventTarget, eventArgument)
5 {
6 var theform;
7 if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
8 {
9 theform = document.Form1;
10 }
11 else
12 {
13 theform = document.forms["Form1"];
14 }
15 theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
16 theform.__EVENTARGUMENT.value = eventArgument;
17 theform.submit();
18 }
19
20 //以下就是要從JavaScript中通知服務器端,你該幹活了
21 function NotifyServer()
22 {
23 //.可以做一些設置,判斷
24
25 Button1是服務器控件的ID,'abc' 可以自己設置,這個我需要給服務器傳遞一些消息數據,平時直接用'即可
26 __doPostBack('Button1','abc')
27 }
28
29 2、aspx 頁面
30 要增加 以下兩個隱藏字段
31 <input type="hidden" name="__EVENTTARGET">
32 <input type="hidden" name="__EVENTARGUMENT">
33
34 <asp:Button id="Button1" runat="server" Text="Button" Visible="False"></asp:Button>
35
36 這裏就是要執行Button1 的後台代碼,同時要將他的Visible 設置成 False ,(雖然資料說 不能將Enable 設置成False,但是我試了一下 將Enabled設置成False還是可以用的
37
38 同時增加一個
39 <input type="button" id="but" onclick="NotifyServer()" value="ServerExecute"> ,執行服務器代碼
40
41 3、aspx.vb 頁面代碼
42 Response.Write("alert('" & Request("__EVENTARGUMENT").ToString() & "'"); ")
43 這裏的Request("__EVENTARGUMENT").ToString() 就是'abc'的內容
44
45 4、注意事項
46 用此種方法,頁面中不能有AutoPost=True 的服務器控件,因爲有AutoPost=True的控件的頁面系統會自動生成以上的代碼(2個hidden控件,還有一個__doPostBack函數),如果你的頁面中 有AutoPost=True的服務器控件,那麽你不需要加以上的代碼(2個hidden控件,還有一個__doPostBack函數),直接用__doPostBack函數吧