zoukankan      html  css  js  c++  java
  • ASP.NET使用doPostBack函数调用后台事件

    ASP.NET怎么使用doPostBack函数调用后台事件?asp.net编程提供了服务端控件和客户端控件的说法,其实还是脱离不了HTML的本质,客户端和服务端需要交互必须要提交,提交有两种方式get和post,get就是通过向服务端发送连接地址,服务端通过地址的参数来获得信息的,一般这些参数都是明文,能在浏览器地址栏看到。而post是通过表单的input等元素提交到服务端的页面的,这些数据一般是看不到的。asp.net的服务端控件其实就是对一般的HTML控件做了个包装,大体是通过隐藏控件提供控制的参数的。
    这里介绍一个常用的函数_doPostBack,这个函数如果如果是ASP.Net render出来的页面就是自动产生这个函数,比如有带autopostback属性的控件,且其属性为true的页面,带编辑列的datagrid页面。
    __doPostBack是通过__EVENTTARGET,__EVENTARGUMENT两个隐藏控件向服务端发送控制信息的,__EVENTTARGET为要调用控件的名称,如果要调用的控件是子控件,用''$'或':'分割父控件:子控件,__EVENTARGUMENT是调用事件时的参数

    页面的HTML里找到客户端Button,写入

    onclick="__doPostBack('Button1','')"

    <script language="javascript">
    <!--
        function __doPostBack(eventTarget, eventArgument) {
            var theform;
            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>

    以及两个隐藏控件

    <input type="hidden" name="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" value="" />

    值得注意的是,_doPostPack的第一个参数是大小写不敏感的。细心的人会发现,在__doPostBack里,提交调用的是theform.submit(),这样就导致对Form的onsubmit事件校验失效了,幸好这个问题在asp.net 2.0已经修复了。这里提供一个替换的解决办法,在Form的最下面插入下面的代码,这段代码在保证不管是不是render出来的页面均有效

    <script language="javascript">
    <!--
        function __doPostBack_Ex(eventTarget, eventArgument)
        {
            var theform;

            if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
                theform = document.forms[0];
            }
            else {
                theform = document.forms[0];
            }

            if(!theform.__EVENTTARGET)
            {          
                theform.appendChild(document.createElement("<input type='hidden' name='__EVENTTARGET'>"));
            }


    本文来自: IT知道网(http://www.itwis.com/) 详细出处参考:http://www.itwis.com/html/net/aspnet/20101019/9321.html

  • 相关阅读:
    初始v4l2(六)-------根据虚拟驱动vivi的使用彻底分析摄像头驱动
    初识v4l2(五)-------v4l2_ioctl浅析
    初识v4l2(四)-------v4l2_open、v4l2_read、v4l2_write浅析
    初识V4L2(三)-------分析vivi.c 虚拟视频驱动
    初识V4l2(二)-------浅析video_register_device
    初识V4L2(一)
    构建根文件系统之根文件系统(三)
    构建根文件系统之构建根文件系统(二)
    构建根文件系统之根文件系统
    vscode在软件内部查看html渲染效果的插件
  • 原文地址:https://www.cnblogs.com/scy251147/p/1859574.html
Copyright © 2011-2022 走看看