如何在客户端调用服务端代码
生活随笔
收集整理的這篇文章主要介紹了
如何在客户端调用服务端代码
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
比如我們?cè)陧撁嫔嫌?個(gè)TextBox,3個(gè)Button,每個(gè)Button分別執(zhí)行不同的動(dòng)作。我們現(xiàn)在想在TextBox中檢測(cè)是否按下了回車鍵,如果是則執(zhí)行不同的Button調(diào)用。即TextBox1中按下回車就執(zhí)行Button1的動(dòng)作,......
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
?<HEAD>
??<title>WebForm2</title>
??<meta?content="Microsoft?Visual?Studio?.NET?7.1"?name="GENERATOR">
??<meta?content="C#"?name="CODE_LANGUAGE">
??<meta?content="javascript"?name="vs_defaultClientScript">
??<meta?content="http://schemas.microsoft.com/intellisense/ie5";?name="vs_targetSchema">
??<script?language="javascript"?event="onkeydown"?for="TextBox1">
??????
???if(event.keyCode==13)<!--?注意大小寫-->
???{
????__doPostBack('Button1','');
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
???
??</script>
??<script?language="javascript"?event="onkeydown"?for="TextBox2">
??????
???if(event.keyCode==13)
???{
????__doPostBack('Button2','');
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
???
??</script>
??<script?language="javascript">
????function?keypress()
????{
?????if(event.keyCode==13)
???{
??????
????__doPostBack('Button3','');
????event.keyCode=0;?<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
????}
??</script>
?</HEAD>
?<body?MS_POSITIONING="GridLayout">
??<form?id="Form1"?method="post"?runat="server">
???<input?type="hidden"?name="__EVENTTARGET">?<input?type="hidden"?name="__EVENTARGUMENT">
???<script?language="javascript"?type="text/javascript">
<!--
?function?__doPostBack(eventTarget,?eventArgument)?{
??var?theform;
??if?(window.navigator.appName.toLowerCase().indexOf("microsoft")?>?-1)?{
???theform?=?document.Form1;
??}
??else?{
???theform?=?document.forms["Form1"];
??}
??theform.__EVENTTARGET.value?=?eventTarget.split("$").join(":");
??theform.__EVENTARGUMENT.value?=?eventArgument;
??theform.submit();
?}
//?-->
???</script>
???<asp:button?id="Button1"?style="Z-INDEX:?101;?LEFT:?192px;?POSITION:?absolute;?TOP:?88px"?runat="server"
????Text="Button1"></asp:button><asp:textbox?id="TextBox1"?style="Z-INDEX:?102;?LEFT:?16px;?POSITION:?absolute;?TOP:?88px"?runat="server"></asp:textbox>
???<asp:Button?id="Button2"?style="Z-INDEX:?103;?LEFT:?192px;?POSITION:?absolute;?TOP:?120px"?runat="server"
????Text="Button2"></asp:Button>
???<asp:TextBox?id="TextBox2"?style="Z-INDEX:?104;?LEFT:?16px;?POSITION:?absolute;?TOP:?120px"?runat="server"></asp:TextBox>
???<asp:TextBox?id="TextBox3"?style="Z-INDEX:?105;?LEFT:?16px;?POSITION:?absolute;?TOP:?152px"?runat="server"></asp:TextBox>
???<asp:Button?id="Button3"?style="Z-INDEX:?106;?LEFT:?192px;?POSITION:?absolute;?TOP:?152px"?runat="server"
????Text="Button3"></asp:Button>
???<asp:Label?id="Label1"?style="Z-INDEX:?107;?LEFT:?24px;?POSITION:?absolute;?TOP:?56px"?runat="server"></asp:Label></form>
?</body>
</HTML>
WebForm2.aspx.cs
----------------------------------------------------------------------
using?System;
using?System.Collections;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Web;
using?System.Web.SessionState;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.HtmlControls;
namespace?UTF8Test
{
?/**////?<summary>
?///?WebForm2?的摘要說明。
?///?</summary>
?public?class?WebForm2?:?System.Web.UI.Page
?{
??protected?System.Web.UI.WebControls.TextBox?TextBox1;
??protected?System.Web.UI.WebControls.Button?Button2;
??protected?System.Web.UI.WebControls.TextBox?TextBox2;
??protected?System.Web.UI.WebControls.TextBox?TextBox3;
??protected?System.Web.UI.WebControls.Button?Button3;
??protected?System.Web.UI.WebControls.Label?Label1;
??protected?System.Web.UI.WebControls.Button?Button1;
?
??private?void?Page_Load(object?sender,?System.EventArgs?e)
??{
???//?在此處放置用戶代碼以初始化頁面
???TextBox3.Attributes.Add("onkeypress","keypress()");//注意大小寫
??}
??Web?窗體設(shè)計(jì)器生成的代碼#region?Web?窗體設(shè)計(jì)器生成的代碼
??override?protected?void?OnInit(EventArgs?e)
??{
???//
???//?CODEGEN:?該調(diào)用是?ASP.NET?Web?窗體設(shè)計(jì)器所必需的。
???//
???InitializeComponent();
???base.OnInit(e);
??}
??
??/**////?<summary>
??///?設(shè)計(jì)器支持所需的方法?-?不要使用代碼編輯器修改
??///?此方法的內(nèi)容。
??///?</summary>
??private?void?InitializeComponent()
??{????
???this.Button1.Click?+=?new?System.EventHandler(this.Button1_Click);
???this.Button2.Click?+=?new?System.EventHandler(this.Button2_Click);
???this.Button3.Click?+=?new?System.EventHandler(this.Button3_Click);
???this.Load?+=?new?System.EventHandler(this.Page_Load);
??}
??#endregion
??private?void?Button1_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"1";
??}
??private?void?Button2_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"2";
??}
??private?void?Button3_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"3";
??}
?}
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
測(cè)試中,我發(fā)現(xiàn)要調(diào)用服務(wù)器端代碼必須調(diào)用__doPostBack函數(shù),但該函數(shù)除了在放置有DataGrid控件的頁面中會(huì)由系統(tǒng)產(chǎn)生外,其他的頁面中并不存在。(可以通過查看源文件看到該代碼)。這樣我們必須手工在aspx中添加__doPostBack函數(shù),和函數(shù)一起添加的還有兩個(gè)隱藏元素,__EVENTTARGET和__EVENTARGUMENT,這是__doPostBack所必須的,實(shí)際上,.NET是把產(chǎn)生事件的元素名稱以及參數(shù)傳到,__EVENTTARGET和__EVENTARGUMENT。然后再調(diào)用Form的submit函數(shù)提交回服務(wù)器的,服務(wù)器端根據(jù)傳回來的參數(shù)就知道是哪個(gè)控件被觸發(fā)了,從而調(diào)用它的相應(yīng)后端代碼,然后再將新頁面回送回客戶端的。
以下是我的測(cè)試頁面,其中使用了兩種方法來檢測(cè)TextBox中的按鍵
WebForm2.aspx
--------------------------------------------------------
<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN"?>
<HTML>
?<HEAD>
??<title>WebForm2</title>
??<meta?content="Microsoft?Visual?Studio?.NET?7.1"?name="GENERATOR">
??<meta?content="C#"?name="CODE_LANGUAGE">
??<meta?content="javascript"?name="vs_defaultClientScript">
??<meta?content="http://schemas.microsoft.com/intellisense/ie5";?name="vs_targetSchema">
??<script?language="javascript"?event="onkeydown"?for="TextBox1">
??????
???if(event.keyCode==13)<!--?注意大小寫-->
???{
????__doPostBack('Button1','');
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
???
??</script>
??<script?language="javascript"?event="onkeydown"?for="TextBox2">
??????
???if(event.keyCode==13)
???{
????__doPostBack('Button2','');
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
???
??</script>
??<script?language="javascript">
????function?keypress()
????{
?????if(event.keyCode==13)
???{
??????
????__doPostBack('Button3','');
????event.keyCode=0;?<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
????return?false;<!--很重要,不然會(huì)選擇Button1進(jìn)行提交??-->
???}
????}
??</script>
?</HEAD>
?<body?MS_POSITIONING="GridLayout">
??<form?id="Form1"?method="post"?runat="server">
???<input?type="hidden"?name="__EVENTTARGET">?<input?type="hidden"?name="__EVENTARGUMENT">
???<script?language="javascript"?type="text/javascript">
<!--
?function?__doPostBack(eventTarget,?eventArgument)?{
??var?theform;
??if?(window.navigator.appName.toLowerCase().indexOf("microsoft")?>?-1)?{
???theform?=?document.Form1;
??}
??else?{
???theform?=?document.forms["Form1"];
??}
??theform.__EVENTTARGET.value?=?eventTarget.split("$").join(":");
??theform.__EVENTARGUMENT.value?=?eventArgument;
??theform.submit();
?}
//?-->
???</script>
???<asp:button?id="Button1"?style="Z-INDEX:?101;?LEFT:?192px;?POSITION:?absolute;?TOP:?88px"?runat="server"
????Text="Button1"></asp:button><asp:textbox?id="TextBox1"?style="Z-INDEX:?102;?LEFT:?16px;?POSITION:?absolute;?TOP:?88px"?runat="server"></asp:textbox>
???<asp:Button?id="Button2"?style="Z-INDEX:?103;?LEFT:?192px;?POSITION:?absolute;?TOP:?120px"?runat="server"
????Text="Button2"></asp:Button>
???<asp:TextBox?id="TextBox2"?style="Z-INDEX:?104;?LEFT:?16px;?POSITION:?absolute;?TOP:?120px"?runat="server"></asp:TextBox>
???<asp:TextBox?id="TextBox3"?style="Z-INDEX:?105;?LEFT:?16px;?POSITION:?absolute;?TOP:?152px"?runat="server"></asp:TextBox>
???<asp:Button?id="Button3"?style="Z-INDEX:?106;?LEFT:?192px;?POSITION:?absolute;?TOP:?152px"?runat="server"
????Text="Button3"></asp:Button>
???<asp:Label?id="Label1"?style="Z-INDEX:?107;?LEFT:?24px;?POSITION:?absolute;?TOP:?56px"?runat="server"></asp:Label></form>
?</body>
</HTML>
WebForm2.aspx.cs
----------------------------------------------------------------------
using?System;
using?System.Collections;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Web;
using?System.Web.SessionState;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.HtmlControls;
namespace?UTF8Test
{
?/**////?<summary>
?///?WebForm2?的摘要說明。
?///?</summary>
?public?class?WebForm2?:?System.Web.UI.Page
?{
??protected?System.Web.UI.WebControls.TextBox?TextBox1;
??protected?System.Web.UI.WebControls.Button?Button2;
??protected?System.Web.UI.WebControls.TextBox?TextBox2;
??protected?System.Web.UI.WebControls.TextBox?TextBox3;
??protected?System.Web.UI.WebControls.Button?Button3;
??protected?System.Web.UI.WebControls.Label?Label1;
??protected?System.Web.UI.WebControls.Button?Button1;
?
??private?void?Page_Load(object?sender,?System.EventArgs?e)
??{
???//?在此處放置用戶代碼以初始化頁面
???TextBox3.Attributes.Add("onkeypress","keypress()");//注意大小寫
??}
??Web?窗體設(shè)計(jì)器生成的代碼#region?Web?窗體設(shè)計(jì)器生成的代碼
??override?protected?void?OnInit(EventArgs?e)
??{
???//
???//?CODEGEN:?該調(diào)用是?ASP.NET?Web?窗體設(shè)計(jì)器所必需的。
???//
???InitializeComponent();
???base.OnInit(e);
??}
??
??/**////?<summary>
??///?設(shè)計(jì)器支持所需的方法?-?不要使用代碼編輯器修改
??///?此方法的內(nèi)容。
??///?</summary>
??private?void?InitializeComponent()
??{????
???this.Button1.Click?+=?new?System.EventHandler(this.Button1_Click);
???this.Button2.Click?+=?new?System.EventHandler(this.Button2_Click);
???this.Button3.Click?+=?new?System.EventHandler(this.Button3_Click);
???this.Load?+=?new?System.EventHandler(this.Page_Load);
??}
??#endregion
??private?void?Button1_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"1";
??}
??private?void?Button2_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"2";
??}
??private?void?Button3_Click(object?sender,?System.EventArgs?e)
??{
???Label1.Text?=?"3";
??}
?}
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的如何在客户端调用服务端代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Minisforum 推出新款 NAB5
- 下一篇: 盈通推出 RTX 4070 Ti 豪华版