博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在客户端调用服务端代码
阅读量:7168 次
发布时间:2019-06-29

本文共 4534 字,大约阅读时间需要 15 分钟。

比如我们在页面上有3个TextBox,3个Button,每个Button分别执行不同的动作。我们现在想在TextBox中检测是否按下了回车键,如果是则执行不同的Button调用。即TextBox1中按下回车就执行Button1的动作,......

测试中,我发现要调用服务器端代码必须调用__doPostBack函数,但该函数除了在放置有DataGrid控件的页面中会由系统产生外,其他的页面中并不存在。(可以通过查看源文件看到该代码)。这样我们必须手工在aspx中添加__doPostBack函数,和函数一起添加的还有两个隐藏元素,__EVENTTARGET和__EVENTARGUMENT,这是__doPostBack所必须的,实际上,.NET是把产生事件的元素名称以及参数传到,__EVENTTARGET和__EVENTARGUMENT。然后再调用Form的submit函数提交回服务器的,服务器端根据传回来的参数就知道是哪个控件被触发了,从而调用它的相应后端代码,然后再将新页面回送回客户端的。

以下是我的测试页面,其中使用了两种方法来检测TextBox中的按键
WebForm2.aspx
--------------------------------------------------------

ExpandedBlockStart.gif
<%
@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="UTF8Test.WebForm2" 
%>
None.gif
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
>
None.gif
<
HTML
>
None.gif 
<
HEAD
>
None.gif  
<
title
>
WebForm2
</
title
>
None.gif  
<
meta 
content
="Microsoft Visual Studio .NET 7.1"
 name
="GENERATOR"
>
None.gif  
<
meta 
content
="C#"
 name
="CODE_LANGUAGE"
>
None.gif  
<
meta 
content
="javascript"
 name
="vs_defaultClientScript"
>
None.gif  
<
meta 
content
="http://schemas.microsoft.com/intellisense/ie5"
; name
="vs_targetSchema"
>
ExpandedBlockStart.gif  
<
script 
language
="javascript"
 event
="onkeydown"
 for
="TextBox1"
>
InBlock.gif
InBlock.gif      
InBlock.gif   
if(event.keyCode==13)<!-- 注意大小写-->
ExpandedSubBlockStart.gif   
{
InBlock.gif    __doPostBack('Button1','');
InBlock.gif    
return false;<!--很重要,不然会选择Button1进行提交  -->
ExpandedSubBlockEnd.gif   }
InBlock.gif   
ExpandedBlockEnd.gif  
</
script
>
ExpandedBlockStart.gif  
<
script 
language
="javascript"
 event
="onkeydown"
 for
="TextBox2"
>
InBlock.gif
InBlock.gif      
InBlock.gif   
if(event.keyCode==13)
ExpandedSubBlockStart.gif   
{
InBlock.gif    __doPostBack('Button2','');
InBlock.gif    
return false;<!--很重要,不然会选择Button1进行提交  -->
ExpandedSubBlockEnd.gif   }
InBlock.gif   
ExpandedBlockEnd.gif  
</
script
>
ExpandedBlockStart.gif  
<
script 
language
="javascript"
>
InBlock.gif    
function keypress()
ExpandedSubBlockStart.gif    
{
InBlock.gif     
if(event.keyCode==13)
ExpandedSubBlockStart.gif   
{
InBlock.gif      
InBlock.gif    __doPostBack('Button3','');
InBlock.gif    event.keyCode
=0<!--很重要,不然会选择Button1进行提交  -->
InBlock.gif    
return false;<!--很重要,不然会选择Button1进行提交  -->
ExpandedSubBlockEnd.gif   }
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif  
</
script
>
None.gif 
</
HEAD
>
None.gif 
<
body 
MS_POSITIONING
="GridLayout"
>
None.gif  
<
form 
id
="Form1"
 method
="post"
 runat
="server"
>
None.gif   
<
input 
type
="hidden"
 name
="__EVENTTARGET"
>
 
<
input 
type
="hidden"
 name
="__EVENTARGUMENT"
>
ExpandedBlockStart.gif   
<
script 
language
="javascript"
 type
="text/javascript"
>
InBlock.gif
<!--
ExpandedSubBlockStart.gif 
function __doPostBack(eventTarget, eventArgument) {
InBlock.gif  
var theform;
ExpandedSubBlockStart.gif  
if (window.navigator.appName.toLowerCase().indexOf("microsoft"> -1{
InBlock.gif   theform 
= document.Form1;
ExpandedSubBlockEnd.gif  }
ExpandedSubBlockStart.gif  
else {
InBlock.gif   theform 
= document.forms["Form1"];
ExpandedSubBlockEnd.gif  }
InBlock.gif  theform.__EVENTTARGET.value 
= eventTarget.split("$").join(":");
InBlock.gif  theform.__EVENTARGUMENT.value 
= eventArgument;
InBlock.gif  theform.submit();
ExpandedSubBlockEnd.gif }
InBlock.gif
// -->
ExpandedBlockEnd.gif
   
</
script
>
None.gif   
<
asp:button 
id
="Button1"
 style
="Z-INDEX: 101; LEFT: 192px; POSITION: absolute; TOP: 88px"
 runat
="server"
None.gif    Text
="Button1"
></
asp:button
><
asp:textbox 
id
="TextBox1"
 style
="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 88px"
 runat
="server"
></
asp:textbox
>
None.gif   
<
asp:Button 
id
="Button2"
 style
="Z-INDEX: 103; LEFT: 192px; POSITION: absolute; TOP: 120px"
 runat
="server"
None.gif    Text
="Button2"
></
asp:Button
>
None.gif   
<
asp:TextBox 
id
="TextBox2"
 style
="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 120px"
 runat
="server"
></
asp:TextBox
>
None.gif   
<
asp:TextBox 
id
="TextBox3"
 style
="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 152px"
 runat
="server"
></
asp:TextBox
>
None.gif   
<
asp:Button 
id
="Button3"
 style
="Z-INDEX: 106; LEFT: 192px; POSITION: absolute; TOP: 152px"
 runat
="server"
None.gif    Text
="Button3"
></
asp:Button
>
None.gif   
<
asp:Label 
id
="Label1"
 style
="Z-INDEX: 107; LEFT: 24px; POSITION: absolute; TOP: 56px"
 runat
="server"
></
asp:Label
></
form
>
None.gif 
</
body
>
None.gif
</
HTML
>

WebForm2.aspx.cs

----------------------------------------------------------------------

None.gif
using
 System;
None.gif
using
 System.Collections;
None.gif
using
 System.ComponentModel;
None.gif
using
 System.Data;
None.gif
using
 System.Drawing;
None.gif
using
 System.Web;
None.gif
using
 System.Web.SessionState;
None.gif
using
 System.Web.UI;
None.gif
using
 System.Web.UI.WebControls;
None.gif
using
 System.Web.UI.HtmlControls;
None.gif
None.gif
namespace
 UTF8Test
ExpandedBlockStart.gif
{
ExpandedSubBlockStart.gif 
/// <summary>
InBlock.gif 
/// WebForm2 的摘要说明。
ExpandedSubBlockEnd.gif 
/// </summary>
InBlock.gif public class WebForm2 : System.Web.UI.Page
ExpandedSubBlockStart.gif 
{
InBlock.gif  
protected System.Web.UI.WebControls.TextBox TextBox1;
InBlock.gif  
protected System.Web.UI.WebControls.Button Button2;
InBlock.gif  
protected System.Web.UI.WebControls.TextBox TextBox2;
InBlock.gif  
protected System.Web.UI.WebControls.TextBox TextBox3;
InBlock.gif  
protected System.Web.UI.WebControls.Button Button3;
InBlock.gif  
protected System.Web.UI.WebControls.Label Label1;
InBlock.gif  
protected System.Web.UI.WebControls.Button Button1;
InBlock.gif 
InBlock.gif  
private void Page_Load(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif   
// 在此处放置用户代码以初始化页面
InBlock.gif
   TextBox3.Attributes.Add("onkeypress","keypress()");//注意大小写
ExpandedSubBlockEnd.gif
  }
InBlock.gif
ContractedSubBlock.gif  
Web 窗体设计器生成的代码
InBlock.gif
InBlock.gif  
private void Button1_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif   Label1.Text 
= "1";
ExpandedSubBlockEnd.gif  }
InBlock.gif
InBlock.gif  
private void Button2_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif   Label1.Text 
= "2";
ExpandedSubBlockEnd.gif  }
InBlock.gif
InBlock.gif  
private void Button3_Click(object sender, System.EventArgs e)
ExpandedSubBlockStart.gif  
{
InBlock.gif   Label1.Text 
= "3";
ExpandedSubBlockEnd.gif  }
ExpandedSubBlockEnd.gif }
ExpandedBlockEnd.gif}
本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/23/260240.html,如需转载请自行联系原作者
你可能感兴趣的文章
matlab数据的平滑处理
查看>>
IGeometry 中取指定的点
查看>>
mysql 的 fiter push down 优化
查看>>
【高德地图API】如何设置Icon的imageSize?
查看>>
全排列 UVA 11525 Permutation
查看>>
php自己总结的一些相关资料
查看>>
MongoDB分片实战(三):性能和优化
查看>>
Java下拉列表联动的实现(从数据库读取数据)
查看>>
ui设计的好网站(转载)
查看>>
震惊,C++还有这种骚操作,看看const怎么用
查看>>
iOS 图文并茂的带你了解深拷贝与浅拷贝
查看>>
谷歌笔试题:如何随机选取1000个关键字
查看>>
流媒体服务器
查看>>
C#基础 out传值
查看>>
(RHEL)Linux下的oracle(11g R2)安装过程
查看>>
Sass入门
查看>>
随笔导读 - 我的博客看这一篇就够了
查看>>
UE插件 写文本提示字数限制
查看>>
终端神器 iterm
查看>>
迷你MVVM框架 avalonjs1.5 入门教程
查看>>