欢迎光临
我们一直在努力

[ASP.NET]如何在客户端调用服务端代码-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

[asp.net][原创]如何在客户端调用服务端代码

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

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

以下是我的测试页面,其中使用了两种方法来检测textbox中的按键

webform2.aspx

——————————————————–

<%@ page language="c#" codebehind="webform2.aspx.cs" autoeventwireup="false" inherits="utf8test.webform2" %>

<!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;<!–很重要,不然会选择button1进行提交 –>

}

</script>

<script language="javascript" event="onkeydown" for="textbox2">

if(event.keycode==13)

{

__dopostback(button2,);

return false;<!–很重要,不然会选择button1进行提交 –>

}

</script>

<script language="javascript">

function keypress()

{

if(event.keycode==13)

{

__dopostback(button3,);

event.keycode=0; <!–很重要,不然会选择button1进行提交 –>

return false;<!–很重要,不然会选择button1进行提交 –>

}

}

</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()");//注意大小写

}

#region web 窗体设计器生成的代码

override protected void oninit(eventargs e)

{

//

// codegen: 该调用是 asp.net web 窗体设计器所必需的。

//

initializecomponent();

base.oninit(e);

}

/// <summary>

/// 设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容。

/// </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";

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » [ASP.NET]如何在客户端调用服务端代码-.NET教程,Asp.Net开发
分享到: 更多 (0)

相关推荐

  • 暂无文章