以前写asp的程序的时候,知道只有type设置为submit的按钮,才能触发表单提交数据给服务器端。
如:Asp.Net中的Button就是等于<input type="submit">.
但是现在Asp.Net的好多控件都可以任意的和服务器端交互,如:LinkButton.
这是怎么实现的呢?
难道是一种全新的方式吗?
其实,这只是微软的一种变通的方式。
我们先来看看客户端的代码是如何的.
我这里是一个带有LinkButton的页面,
其实LinkButton在客户端就等于html里的A.
我们来看看LinkButton为什么也能和服务器端交互?
当我们点击右键查看该页面的源代码时,看到:

<script type="text/javascript">
<!--
var theForm = document.forms['ctl00'];
if (!theForm) {
    theForm = document.ctl00;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>

<a id="simpleLinkButton1" href="javascript:__doPostBack('simpleLinkButton1','')">Click Me</a>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
从上面的代码中就可以看出simpleLinkButton1是一个链接,通过客户端代码来提交所在的表单。
而其中两个隐藏域,则用来交换数据的,就是把__doPostBack的两个参数值赋给这两个隐藏域。
这就是为什么LinkButton也具有提交数据的最直观的原因。

那么这上面的代码是怎么生成的呢?
我们看LinkButton的源代码就可以清楚地知道:
protected internal override void OnPreRender(EventArgs e)
{
      base.OnPreRender(e);
      if ((this.Page != null) && this.Enabled)
      {
            this.Page.RegisterPostBackScript();
            if ((this.CausesValidation && (this.Page.GetValidators(this.ValidationGroup).Count > 0)) || !string.IsNullOrEmpty(this.PostBackUrl))
            {
                  this.Page.RegisterWebFormsScript();
            }
      }
}

以上只是把自己在学习工作过程中的一些体会记录如此,防止自己忘记了。
也望和大家多多交流!

转载于:https://www.cnblogs.com/maplye/archive/2006/08/29/489338.html

Asp.Net的控件如何与Server交互相关推荐

  1. QuickPager asp.net 分页控件 转

    QuickPager asp.net 分页控件.表单控件等自定义控件下载 和介绍 最新下载地址: 自然框架的源代码.Demo.数据库.配置信息管理程序下载(2010.01.25更新) QuickCon ...

  2. asp.net分页控件使用详解【附实例下载】

    本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将 ...

  3. ASP.NET用户控件的创建和使用

    ASP.NET用户控件的创建和使用 1. Web用户控件概述 Web用户控件是一种服务器控件,它与ASP.NET页面有着同样的所见即所得的特点,并以.ascx为扩展名存储为文本文件,同样具有自己的界面 ...

  4. ASP.NET验证控件详细使用解释

    ASP.NET是微软推出的下一代WEB开发工具,其强大的功能立即吸引了一大批WEB开发者投入它的靡下.现在,我们来看看ASP.NET的验证控件,感受ASP.NET的强大功能同时方便我们现在的WEB开发 ...

  5. ASP.Net TextBox控件只允许输入数字

    原文:ASP.Net TextBox控件只允许输入数字 1.1.在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: <asp:TextBox ID= ...

  6. 【转】ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证)...

    [转]ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证) ASP.NET验证控件详解 现在ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服 ...

  7. javascript获取asp.net服务器端控件的值(2009-10-31 15:24:26)转载标签:杂谈 分类:技术分类

    javascript获取asp.net服务器端控件的值 (2009-10-31 15:24:26) 转载 标签: 杂谈 分类:技术分类 代码如下: <%@ Page Language=" ...

  8. javascript获取asp.net服务器端控件的值

    代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...

  9. asp.net模板控件示例

    asp.net模板控件示例 原文:asp.net模板控件示例 模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面. 编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类, ...

最新文章

  1. 「SAP技术」SAP MM ME2N报表能按‘order acknowledgement‘查询采购订单
  2. isis协议_ISIS基础知识介绍
  3. 华为架构师8年经验谈:从单体架构到微服务的服务化演进之路
  4. Spring MVC表单验证
  5. 【引用】IP地址已经分配给另一个适配器问题的解决方法
  6. 【Flink】Flink 检查点 Triggering checkpoint createBlockoutputstream no further info information
  7. 三角函数的思维导图(上)
  8. Java基础18 异常,Java面试题库
  9. 精准测分:基于函数调用关系链的用例消振算法(上帝视角)
  10. 雷达图的实现(R语言及Python)
  11. collect2: error: ld returned 1 exit status(Linux下Gcc编译问题)
  12. 【kali】34 WEB渗透——扫描工具w3af_console
  13. SAP 固定资产主数据
  14. sql中on和where的区别在哪
  15. 调整 Windows 11 任务栏位置
  16. 大学c语言第三章作业,第三章_C语言标准课件_ppt_大学课件预览_高等教育资讯网...
  17. 电脑打字拼音出现下划线,没有中文提示框
  18. 价值百万的2022年度总结
  19. m8 windows android,HTC M8 WP版正式发布 通刷Android和WP8.1
  20. android x86还是arm,Android x86是否模拟ARM?(Does Android x86 emulate ARM?)

热门文章

  1. 进程知识点,只需这一篇
  2. 网站的高性能架构--应用服务器优化
  3. C语言中:在头文件中使用static定义变量意味着什么?
  4. 设计模式:装饰者模式(Decorator)
  5. gcd的二进制优化笔记
  6. 第二十二章:动画(十四)
  7. 数据库相关的系统巡检参考项
  8. Hibernate Session的Flush模式
  9. 固态存储作缓存 提升性能有绝招
  10. 【面试题】你知道为什么HashMap是线程不安全的吗?