[翻译]Hello ASP.NET AJAX

手写轻量级 ASP.NET 服务框架:深入管线、Handler 与 Module ASP.NET 管线是请求处理的核心机制,其本质是一系列可订阅的生命周期事件链;HttpHandler 承担业务逻辑执行职责,HttpModule 则负责横切关注点(如认证、日志、重写)的拦截与调度。这种职责分离设计赋予了极高的可预测性与定制自由度,尤其适用于统一网关、协议适配、深度监控等工程场景。相比 MVC 的高抽象封装,基于原生管线构建的轻量级服务框架,能精准控制序列化方式、URL 路由时机与请求流劫持点,让开发者真正掌握从 IIS 接入到响应输出的全链路。本文即围绕 ASP.NET 管线与 Http 阅读详情
原文地址: http://www.dotnetbips.com/articles/displayarticledetails.aspx?articleid=524
[原文源码下载]


Hello ASP.NET AJAX


原文发布日期:2006.11.24
作者: Bipin Joshi
翻译: webabcd


介绍
在2005年9月我写了关于在asp.net 2.0里使用ajax的5篇系列文章。那几篇文章告诉了大家如何在asp.net 2.0中使用ajax。虽然使用ajax可以改善程序的相应速度,以及减少回发数据,但它需要相当多的客户端脚本才能带到我们所期望的结果。现在asp.net ajax在有同样功能的情况下,减少了很多代码。这篇文章里,我将用一个例子“hello world”,向大家介绍asp.net ajax。在未来的几个月内你将会看到本系列文章的更多内容。


asp.net ajax概述
微软把自己的ajax实现命名为asp.net ajax。微软已经有了一个开发web站点的asp.net平台,不要怀疑,你可以非常简单的在这个平台上增加ajax开发环境。今天人们关注ajax的主要原因有:
    ·用户响应
    ·减少回发数据
    ·丰富的用户体验

在传统的web站点中,用户提交数据后需要等待,直到页面完成数据回发并相应结果。这意味着用户需要等待更长的时间。而在ajax中,页面的处理本质上来说是异步的。自然,web页也就能更快的响应用户的操作。

在传统的web应用程序中,web页经常要频繁的将数据回发到服务器,即使只是一小部分需要改变也不例外。这导致了需要更多的网络流量,以及更长的实现来显示页面。而在ajax中只是这个页面的一小部分才刷新,从而避免了整个页面的数据都回发至服务器。这自然改善了性能和用户体验。

asp.net提供了令人印象深刻的诸如Grids和Lists之类的服务器控件。但是,一些UI效果最好使用客户端代码来实现。如菜单、进度条、有自动完成功能的文本框、拖拽、提示框、对话框就是最好的例子。asp.net ajax提供了一个控件似的用法来实现。(更多的稍后讲)


asp.net ajax架构
全部的asp.net ajax由两部分组成:
    ·服务端组件
    ·客户端组件

注意上面说的“组件”这个词就是指一些二进制和脚本之类的东西,没有别的意思。

服务端组件
服务端组件包括:
    ·服务器控件
    ·web服务
    ·服务器控件扩展

asp.net ajax允许你在你的应用程序中使用服务器控件来完成ajax的一些功能。最值得注意的控件是ScriptManager和UpdatePanel。ScriptManager控件包含了所有脚本资源,任何web页,如果想使用ajax就必须引入ScriptManager控件。UpdatePanel控件允许你在整个页中局部刷新某一部分。你可以认为它是一个可以把任何web服务器控件赋予ajax功能的控件。

asp.net 2.0中的Membership和Profile是asp.net中服务端的功能。很幸运,asp.net ajax提供了一套web服务,可以让你在客户端中使用这些特性。例如,你可以使用客户端脚本来检查用户是否通过验证。

asp.net ajax也允许你开发自己的ajax服务器控件。这些控件也能有客户端行为,也能根据你的需求提供丰富的自定义功能。


客户端组件
asp.net ajax客户端组件由javascript脚本库组成。这些脚本库全部是面向对象的javascript并且相对于传统的javascript功能上有了很大的增强。例如,传统的javascript中你需要使用document.getElementById()方法来访问页中的html标记。而使用了ajax的客户端类库后,你可以将这些标记升级为控件,如Label,Button控件等。asp.net ajax客户端组件的另一个好处就是它不依赖于某一中浏览器,而是可以在几乎所有流行的浏览器中工作,如IE,FireFox,Safari等。

注意:
上面提及的客户端组件的一些部分现在已经被称作“asp.net ajax futures”分离出来了,然而,它仍然是整个客户端组件的一部分


asp.net ajax control toolkit
asp.net ajax control toolkit是一个有着丰富功能的ajax控件的集合,你可以在你的应用程序中使用它们。它也提供了一个SDK,使你也可以开发自己的控件。这些控件包括CollapsiblePanel,ConfirmButton,HoverMenu和ModalPopup。


开发一个简单的ajax程序
为了开发这个程序,你需要在你的机器上安装asp.net ajax 1.0 rc。让我们开始新建一个web站点。注意,当你安装了asp.net ajax之后,则会出现一个新的名字为“asp.net ajax enabled web site”的模板。下图出示新建web站点的对话框的所有模板。


我们并不是必须要使用这个模板。如果你不使用它的话,你需要手动作一些工作,比如新建一个web.config文件,引用System.Extensions程序集。这个程序集包括了asp.net ajax的核心功能。

如果你打开了默认web页,你会发现代码中已经有了一个ScriptManager控件。拖拽一个Label控件到你的web窗体上,再拖拽两个UpdaetPanel控件和一个UpdateProgress控件到你的web窗体上。注意,这些控件在你的工具箱的ajax extensions选项卡里。

拖拽一个Button控件和一个Label控件到第一个UpdatePanel控件里。再拖拽一个Label控件和一个Timer控件到第二个UpdatePanel控件里。设置Timer控件的Interval属性为3000毫秒。最后,拖拽一个Label控件到UpdateProgress控件里,并设置它的Text属性为“Wait... Server is processing your request...”。

在你的Page_Load事件中添加如下代码:
protected   void  Page_Load( object  sender, EventArgs e)
{    
    Label2.Text 
= "Time Stamp : " + DateTime.Now.ToString();
}
这段代码比较简单,它设置了Label控件的Text属性为一个字符串加上当前时间。现在,我们接着写第一个UpdatePanel控件里的按钮的单击事件的代码。

protected   void  Button1_Click( object  sender, EventArgs e)
{ 
    System.Threading.Thread.Sleep(
3000); 
    Label1.Text 
= "Time Stamp : " + DateTime.Now.ToString();
}
这段代码设置了让程序3秒后执行,并给Label控件赋值为当前时间。最后,我们写一段Timer控件的Tick事件的代码。

protected   void  Timer1_Tick( object  sender, EventArgs e)
{ 
    Label4.Text 
= "Timer is ticking : " + DateTime.Now.ToString();
}
Tick事件在每经过一个Interval属性所设置的间隔时间后都被触发。这段代码给Lable控件赋值为当前时间。

现在设置你的UpdateProgress控件的AssociatedUpdatePanelID属性为你的第一个UpdatePanel控件的ID。这个UpdateProcess控件将显示一段处理文字,用来告诉用户其所关联的UpdatePanel控件正在被更新。


本文结束。你已经开发了一个有ajax功能的web窗体。运行这个web,你将会看到如下一些效果:
    ·当你单击第一个UpdatePanel控件里的按钮时,则仅仅在这个UpdatePanel控件里的Label控件的值有所改变。其他Label控件的值并没有改变,这意味着仅仅在UpdatePanel区域的控件进行了刷新。
    ·当你单击第一个UpdatePanel控件里的按钮时,那个UpdateProgress控件显示了一段信息用来说明刷新还没有完成。
    ·在第二个UpdatePanel控件内的Label控件会每隔3秒自动的刷新一次。

下面这个图显示了运行这个web窗体后的结果



作者: Bipin Joshi
Email: http://www.dotnetbips.com/contact.aspx
简介:Bipin Joshi是DotNetBips.com的管理员。他是 http://www.binaryintellect.com/的发起人,这个公司提供.NET framwork的培训和咨询服务。他在印度孟买为开发者提供培训。他也是微软的MVP(ASP.Net)和ASPInsiders的会员。
ASP.NET MVC生命周期详解:从路由匹配到视图渲染的7大核心阶段 ASP.NET MVC生命周期是HTTP请求在服务端处理的标准化流程,其本质是基于管道模式(Pipeline)的分层架构设计,涵盖路由解析、控制器激活、模型绑定、动作执行、结果执行等关键环节。该机制通过高度解耦的扩展点(如IAuthorizationFilter、IModelBinder)支撑企业级应用的可测试性、可监控性与可替换性。理解其原理有助于精准定位404错误、参数绑定失败、过滤器不生效等高频问题,并为统一日志、防重复提交、租户隔离等业务场景提供底层支撑。本文聚焦.NET Framework原生MV 阅读详情

相关推荐

ASP.NET MVC底层原理与HTTP契约解析

MVC模式本质是HTTP请求与.NET对象之间的结构化映射协议,其核心在于路由匹配、模型绑定、视图解析三大机制如何严格对齐HTTP语义。理解RouteData如何将URL路径段确定性地分解为Controller/Action/参数,掌握DefaultModelBinder在ValueProvider链中按优先级提取表单、路由、查询参数的执行逻辑,才能真正驾驭高并发、安全合规、可测试的Web应用构建。这些原理在ASP.NET Framework与Core中数学同构,仅实现载体不同。本文聚焦MVC内核中被现代抽

dejz8829的专栏 606

ASP.NET MVC 1.0 Controller/Action 原理深度解析

Controller 和 Action 是 Web 开发中请求-响应模型的核心抽象,其本质是框架与开发者之间的可执行契约。理解其设计原理,需回归 HTTP 动词约束、反射调用机制与上下文生命周期等基础概念。ASP.NET MVC 1.0 以极简架构剥离了现代框架的中间件、异步抽象和泛型封装,使路由匹配、Action 选择、模型绑定与 ActionResult 执行等关键环节完全透明可见。这种‘无魔法’实现不仅揭示了 Web 框架底层运行逻辑,更为学习 ASP.NET Core 的管道模型、过滤器链与依赖注入

diaojin6880的博客 465

ASP.NET MVC架构原理与请求生命周期深度解析

MVC(Model-View-Controller)是一种经典的软件分层架构模式,其核心在于职责分离与请求驱动的流程控制。它通过明确划分数据模型、用户界面和协调逻辑,解决Web开发中测试困难、SEO不友好及前后端协作低效等共性问题。技术演进中,尽管框架形态不断变化(如React、Spring MVC、Express),但HTTP请求处理的关键节点——路由匹配、控制器调度、模型绑定、视图渲染——始终构成服务端渲染的底层共识。深入理解MVC的12步请求生命周期与Model Binding机制,不仅能精准定位40

didi9310的博客 429

Visual Studio 2017 ASP.NET在设计WEB页面时让控件可以自由拖动

我对DIV/CSS一窍不通,时间紧急,需要完成WEB页面设计,因此想到了偷懒的方法,如果使用Visual Studio 2017 ASP.NET在设计WEB页面时让控件可以自由拖动,那就太好啦! 一、添加一个WEB窗体 窗体命名为Login <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebApplication1.Login" %...

ba_wang_mao的专栏 5166

.NET技术演进与开发者成长心法:兼容性、源码阅读与跨栈建模

编程语言与运行时框架的演进,本质是工程哲学在兼容性、抽象能力与可维护性之间的持续权衡。.NET的向后兼容设计并非技术保守,而是基于二进制兼容、源码稳定与运行时沙箱的系统性保障;async/await等语法糖背后是状态机与IOCP的底层协同,揭示了异步编程的本质逻辑;而将TPL与GCD、MVC路由与Rails路由对照理解,则体现了跨技术栈建模的价值——它让知识从离散点升级为可迁移的网络。这种‘读源码→解框架→连生态’的学习路径,正是中高级开发者突破技术瓶颈、构建长期竞争力的核心方法论。

424

WSL2+Docker实战:在Windows上部署MinerU 2.5.3,解锁媲美Demo的VLM PDF解析能力

本文详细介绍了如何在Windows系统上通过WSL2+Docker部署MinerU 2.5.3,实现媲美Demo的VLM PDF解析能力。文章涵盖环境准备、Docker部署实战技巧及高级使用技巧,特别针对PDF识别中的复杂排版、公式和图表处理提供了优化方案,帮助用户高效处理学术论文和技术文档。

weixin_29291573的博客 481

Hello ASP.NET AJAX

原文地址:http://www.dotnetbips.com/articles/displayarticledetails.aspx?articleid=524[原文源码下载]Hello ASP.NET AJAX原文发布日期:2006.11.24作者:Bipin Joshi翻译:webabcd介绍在2005年9月我写了关于在asp.net 2.0里使用ajax的5篇系列文章。那几篇文章告诉

我就是停不下来 663

一文学会Cadence Sigrity PDN仿真——硬件新手小白都能看懂的保姆级教程

电源完整性的仿真,实际上是在仿真以及优化系统中的等效串联电阻。知道了仿真以及优化的目标之后,接下来就是要弄明白这个串联电阻从哪儿来以及怎么优化。整个系统中的串联电阻实际上由三部分组成:没有相位的阻抗,有相位的容抗和感抗,得益于相位,在某个特定的频点,容抗和感抗会大小相等,相位相反而相互抵消,这时候整个系统中就剩下了阻抗,所以整个系统的串联电阻达到了一个最低值,这种现象就是----谐振。当系统处于谐振点时候,整个系统会有一个最小的串联电阻,所以第一个优化电阻的手段就是让谐振来的更频繁一点。

学习帮的博客 2万+

asp.net core

用于创建一个 Web 应用程序的构建器 (WebApplicationBuilder) 实例。通过这个构建器,你可以配置应用程序的服务和中间件,进而构建和运行你的 ASP.NET Core Web 应用。 用于设置Web服务器所监听的URL和端口。通过这个方法,开发者可以指定应用程序在哪些地址和端口上运行,从而控制外部请求如何到达你的应用程序。 允许你访问应用程序的配置设置,这些设置通常包含在 appsettings.json、环境变量、用户机密、命令行参数等中。builder.Configuration

备忘 1398

Win10安装Nek5000

1 安装wsl 2 2 安装Nek5000 3 安装依赖项 4 安装openmpi 5 配置Nek5000 6 编译Nek5000 7 运行Nek5000算例 8 安装paraview并查看结果

weixin_43176703的博客 3448

【WILEY】从Revision到Online:一次投稿的完整状态演进与关键节点实战解析

本文详细解析了从Revision到Online发表的完整投稿流程,包括修改稿准备、回复信撰写、状态跟踪等关键节点。特别针对Wiley期刊,提供了实用的操作技巧和常见问题解决方案,帮助作者高效完成论文修改与发表。

weixin_29219189的博客 361

ASP.NET技术写作手记:从基础细节到认知地图

ASP.NET作为经典的Web开发框架,其核心价值不仅在于语法和API,更在于对请求生命周期、状态管理、配置机制等底层原理的深刻理解。掌握Request.Params取值顺序、HttpHandler映射规则、Cache穿透防护等关键细节,是避免线上故障的基础能力;而将这些知识点组织成可检索、可复用的‘技术认知地图’,则体现了工程化写作的真正价值。这类内容既服务于初学者快速定位问题,也支撑资深开发者构建系统性调试能力。本文聚焦ASP.NET中那些文档未明说、但生产环境高频踩坑的技术细节,结合真实故障排查与性能

unixboy 484

华为od统一考试B卷【宜居星球改造计划】Java&Go 实现

XXX年,人类通过对火星的大气进行宜居改造分析,使得火星已在理论上具备人类宜居的条件,由于技术原因,无法一次性将火星大气全部改造,只能通过局部处理形式,假设将火星待改造的区域为row * column的网格每个网格有3个值,宜居区、可改造区、死亡区,使用YES、NO、NA代替,YES表示该网格已经完成大气改造,NO表示该网格未进行改造,后期可进行改造,NA表示死亡区,不作为判断是否改造完成的宜居,无法穿过 初始化下,该区域可能存在多个宜居区,并且每个宜居区能同时在每个太阳日单位向上下左右四个方向的相邻格子进

MISAYAONE的博客 1万+

基于VUE框架、前端UI样式库Bootstrap4、在线WebApi资源调用的Web前端技术课程设计《Hello,Translate》

本应用主要使用vue框架+bootstrap前端框架+WebService,通过对百度智能云中的机器翻译WebApi资源的调用完成整个设计,完成对输入文本的翻译功能。能学到什么:1.学会Vue框架+bootstrap前端框架+WebService的基础使用。2.对前后端联调有初步认识。 调试建议:运行调试平台尽量选用Visual Studio 2019,确保WebService运行,然后调试主页面。

weixin_45804384的博客 1129

中国石油招标投标网 — 中标候选人爬虫技术分析

复制真实浏览器的 TLS 握手参数(密码套件顺序、TLS 扩展、ALPN 等),绕过基于 JA3/JA3S 指纹的服务端检测。所有 API 请求体使用 RSA-1024 公钥加密,响应体使用私钥解密,HTTP body 全程为密文。库使用 urllib3 的默认 TLS 握手参数,与真实浏览器差异明显,易被 JA3 指纹检测工具识别。密钥隐藏在 CSS 文件中,这是一种隐蔽分发技术,防止简单的密钥抓取。切换次数越多,等待时间越长,最大 60 秒,避免被代理 API 限流。为空,也返回包含基础信息的空行。

猫敷雪 285

ESP32与BH1750光照传感器结合使用的Web服务器案例

请注意,为了使代码正常工作,你需要将代码中的"你的WiFi网络名称"和"你的WiFi网络密码"替换为你自己的WiFi网络凭据。在代码中,我们首先导入了所需的库文件,包括Wire库用于I2C通信,BH1750库用于与光照传感器通信,WiFi库和WebServer库用于创建Web服务器。接下来,我们将编写一个Arduino代码来控制ESP32与BH1750的通信,并将读取到的光照强度值显示在Web服务器上。函数用于处理根路径的请求,其中我们读取光照传感器的值,并将其显示在返回的HTML页面中。

server_api196的博客 617

Goodbye world

每次都 Hello world 好闷。以后就在这块儿安营扎寨了...上几个为 51cto 做的译文先:ASP.NET MVC应用程序的本地化、单元测试和AJAX应用初探OSGi Web容器:控制Web程序的生命周期Java:所有的equals方法实现都是错误的?2009年.NET开发者调查:jQuery和MS Ajax不分伯仲所有译文均由杨赛编辑和发布,在这里,请允许我代表我...

weixin_34087503的博客 112

谱方法学习笔记-下(超详细)

《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。

图灵的猫的博客 2853

技术博客如何成为工程师的认知校准器

技术博客本质上是工程认知的结晶过程,它将模糊直觉转化为可验证、可复用、可传播的知识资产。其核心价值不在信息分发,而在驱动作者完成三层认知解构:剥离情绪表象、抽象底层规律、建立跨场景连接。这种写作实践天然强化系统思维与问题归因能力,尤其在.NET等强类型生态中,对CLR内存模型、分布式事务边界、类型系统契约等关键概念的持续深挖,能显著提升架构决策质量。当博客内容被直接引用为生产事故根因分析依据,或嵌入IDE作为实时纠错提示时,它就从‘学习资料’升维为‘工程基础设施’——这正是老赵点滴式博客的技术价值本质。

dejz8829的专栏 358

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HttpHandler与HttpModule核心区别及迁移指南

HttpHandler和HttpModule是ASP.NET请求管道中两类关键扩展机制,前者负责终结请求并生成响应,后者通过订阅生命周期事件实现横切逻辑。其设计本质源于对HTTP请求处理流程的分层抽象:Handler对应‘执行单元’,Module对应‘拦截增强’。这种分离支撑了鉴权、日志、缓存等通用能力的复用与解耦,构成传统Web Forms/MVC架构可维护性的底层基础。随着.NET Core演进,二者被Middleware(模块化中间件)和Endpoint Routing(轻量终结点)以更透明、可测试的

didi9310的博客 634

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Script# 入门~

Script#是和以前的Altas一起出来的项目,就是可以在客户端编写C#,如RJS允许你使用Ruby来编写客户端的脚本,Google Web Toolkit使用Java,但Nikhil Kothari的Script# 允许你使用C#来写客户端的脚本,Script#多美丽的名字,需要一次平静中的爆发。 现在就来翻译一篇ScriptSharp Version0.4.40(2007.1...

305

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Script# 入门

来源:成功的渴望与生俱来  http://www.cnblogs.com/worksguo/archive/2007/12/13/993995.htmlScript#是和以前的Altas一起出来的项目,就是可以在客户端编写C#,如RJS允许你使用Ruby来编写客户端的脚本,Google Web Toolkit使用Java,但Nikhil Kothari的Script# 允许你使用C#来写客户端

TonyWang的专栏 1855
上一篇: 扩展GridView控件(5) - 固定指定行、指定列
下一篇: [翻译]asp.net 2.0中的url映射
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值