时间:2021-05-25
这里需要提一下的是,asp.net编程提供了服务端控件和客户端控件的说法,其实还是脱离不了HTML的本质,客户端和服务端需要交互必须要提交,提交有两种方式get和post,get就是通过向服务端发送连接地址,服务端通过地址的参数来获得信息的,一般这些参数都是明文,能在浏览器地址栏看到。而post是通过表单的input等元素提交到服务端的页面的,这些数据一般是看不到的。asp.net的服务端控件其实就是对一般的HTML控件做了个包装,大体是通过隐藏控件提供控制的参数的。
这里介绍一个常用的函数_doPostBack,这个函数如果如果是ASP.Netrender出来的页面就是自动产生这个函数,比如有带autopostback属性的控件,且其属性为true的页面,带编辑列的datagrid页面。
__doPostBack是通过__EVENTTARGET,__EVENTARGUMENT两个隐藏控件向服务端发送控制信息的,__EVENTTARGET为要调用控件的名称,如果要调用的控件是子控件,用''$'或':'分割父控件:子控件,__EVENTARGUMENT是调用事件时的参数
下面演示下如何调用后台事件:
1.新建工程
2.拖入一个服务端Button1,一个DropDownList1和一个客户端Button
3.设置DropDownList1的AutoPostBack属性为True,Button1的Visible为False
4.双击Button1,在事件里写下Response.Write("hello:");
5.页面的HTML里找到客户端Button,写入onclick="__doPostBack('Button1','')"
6.编译,运行,点击Button是不是出现了"Hello"
7.查看源代码,发现里面多了下面行
复制代码 代码如下:
<scriptlanguage="javascript">
<!--
function__doPostBack(eventTarget,eventArgument){
vartheform;
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();
}
//-->
</script>
以及两个隐藏控件
复制代码 代码如下:
<inputtype="hidden"name="__EVENTTARGET"value=""/>
<inputtype="hidden"name="__EVENTARGUMENT"value=""/>
值得注意的是,_doPostPack的第一个参数是大小写不敏感的
细心的人会发现,在__doPostBack里,提交调用的是theform.submit(),这样就导致对Form的onsubmit事件校验失效了,幸好这个问题在asp.net2.0已经修复了。这里提供一个替换的解决办法,在Form的最下面插入下面的代码,这段代码在保证不管是不是render出来的页面均有效
复制代码 代码如下:
<scriptlanguage="javascript">
<!--
function__doPostBack_Ex(eventTarget,eventArgument)
{
vartheform;
if(window.navigator.appName.toLowerCase().indexOf("netscape")>-1){
theform=document.forms[0];
}
else{
theform=document.forms[0];
}
if(!theform.__EVENTTARGET)
{
theform.appendChild(document.createElement("<inputtype='hidden'name='__EVENTTARGET'>"));
}
if(!theform.__EVENTARGUMENT)
{
theform.appendChild(document.createElement("<inputtype='hidden'name='__EVENTARGUMENT'>"));
}
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);
}
}
//-->
</script>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
js调用后台,后台调用前台等方法总结1.javaScript函数中执行C#代码中的函数:方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入Button1
前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例CasMenu.aspx页面:复制代码代码如下:Porschev--前台JS(Jquery)调用后台
前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单CasMenu.aspx页面
分两种情况,调用JS方法,和调用后台方法。 调用JS方法的如下。 有两种方法: 一、在前台: 二、在后台:Label1.Attributes.Add
做项目中,经常会通过调用后台接口把数据显示到前台页面上来,之前遇到过的问题是,前台页面是用ul+li标签写的,在调用接口调试时发现返回的数据有很多组的,而在前台