ASP.NET拾萃——服务器端控件篇(一)〖本文对服务器控件有错误认识〗

别再被网站识别成机器人了!用Python的undetected_chromedriver+Selenium实现无痕自动化 本文详细介绍了如何利用Python的undetected_chromedriver和Selenium实现无痕自动化,突破现代网站的反爬系统。通过修正浏览器指纹、模拟人类操作行为,并结合实战案例,帮助开发者构建难以被识别的自动化脚本,适用于电商监控等场景。 阅读详情
技巧一:在客户端的JavaScript脚本中获取服务器端控件的值

以前,当我们需要在脚本里访问页面内一个对象的时候,一般都是通过对象的id或name。就像这样——

// ...
function getText()
{
  return document.form1.Text1.value; // Text1就是对象的id
}

// ...



现在,ASP.NET让我们越来越习惯使用TextBox作为用户输入的途径。如果我们想在客户端脚本里访问一个TextBox,原先的做法就行不通了——

// ...
function getText()
{
  return document.form1.Text1.value; // Text1还是对象的id?
}

// ...



浏览页面时,会有一个脚本错误——“Text1对象不存在”。原因就在于,Text1作为服务器端控件TextBox,在被发送到客户端之前,先由.NET Framework进行转换,而它的id显然也是转换的一部分。如果你在客户端查看页面的源代码,你可以发现原先的Text1已经不存在,取而代之的是一个普通的INPUT——


这就是转换的结果,id不再是设计时所指定的id。如果我们要在客户端访问这个文本输入框,也必须改变访问的id。如何改变?直接将
document.form1.Text1
改为
document.form1.item("Test_Text1") // 保险起见,使用item由id或name得到控件
或者
document.getElementByID("Test_Text1")  // 保险起见,使用getElementByID由id或name得到控件

可以吗?当然可以!只要你的控件id固定是"Text1"。
但是,只有这个条件还不够。"Test"又是什么?它也应该被考虑在内(幸好form的id不会改变,否则要关心的内容又会多一个)。
你或许已经看出,Test就是这个Web页面的名字。对吗?——不完全对:P
确切地说,控件转换后id中的"Test"是其所在的Web窗体对象的ClientID。所有的ASP.NET对象都在服务器端有一个实例(如果你面向对象的基础不够,建议也补完一次吧),而这个"Test",就是这个页面实例对象的ClientID。而ClientID,则是每个Web窗体页的一个属性,它指明了这个Web窗体在客户端的标识。
为什么要这么复杂?道理很简单,我们并不能在客户端脚本里确定页面的ClientID和控件的ID。
那应该怎样做呢?
“在服务器端代码里生成客户端JavaScript。”——似乎非常复杂,其实并不困难,只要在服务器端Page_Load事件里加上(在IsPostBack判断之外)——
RegisterStartupScript("start",
   "/n /n");

RegisterStartupScript是Web窗体(System.Web.UI.Page类)的一个方法,作用是在生成的页面里注册客户端脚本。
在这里,我们添加了一个getText()函数,作用和之前的getText()一样,所不同的在于,它所访问的控件id并非脚本内指定,而是在服务器端根据页面的ClientID(this.ClientID,this就是页面自己)和Text1控件的ID(this.Text1.ID)动态生成的。
编译之后重新浏览,我们会在新的页面源代码里找到这个由服务器端代码生成的JavaScript函数。此时,在页面的其他地方调用getText()函数就将正确得到Text1中的内容了。

基于OpenClaw的AI数字员工协同团队架构设计 随着大型语言模型从被动的文本生成器向具备自主规划与执行能力的智能代理演进,企业级人工智能的应用范式正在发生根本性转变。在这一演进过程中,OpenClaw(前身为Clawdbot及Moltbot)作为一种开源的、本地优先的个人AI智能体网关基础设施,凭借其对持续内存、多通道接入以及沙盒化工具执行的原生支持,迅速成为构建“始终在线”数字劳动力的核心框架 1。然而,将单体个人助理扩展为能够处理复杂业务逻辑、支持跨组织协同并严格保障数据隔离的多智能体(Multi-Agent)团队,绝非简单的API拼接。系统架构必须 阅读详情

相关推荐

10分钟上手YOLOv11:最强姿态估计模型来了,代码开源,效果炸裂!

【10分钟玩转YOLOv11实时姿态估计】🚀 YOLOv11作为YOLO家族最新成员,在速度、精度和易用性上全面升级,尤其适用于姿态估计等复杂视觉任务。本文带您快速掌握: 1️⃣ 核心概念:姿态估计即识别人体17个关键点(如关节部位)并连接成数字骨架,是智能健身、体感游戏等应用的基础。 2️⃣ 技术优势: 超轻量级(最小仅2.9M参数) 极速推理(GPU仅1.7ms) 高精度(COCO mAP@50-95达50%) 3️⃣ 三步实操: ① 安装:pip install ultralytics ② 准备人物

weixin_41246802的博客 1787

ASPNET服务器控件和客户端脚本

ASPNET服务器控件和客户端脚本(三) (转载)(2008-08-23 09:43:58)标签:杂谈 分类:学习类在上面的输出中,指定的脚本的确包含在ASP.NET的页面代码之前.不仅包含标记,还在脚本外部添加了适当的注释标记(这样旧式浏览器就不会崩溃).4.4.2 使用Page.ClientScript.RegisterStartupScriptRegisterStartu

wubing1111的专栏 736

国产FPGA逆袭!深度评测复旦微RFVU3P5G核心板在相控阵雷达中的表现

本文深度评测了复旦微RFVU3P5G核心板在相控阵雷达中的实战表现。该核心板凭借射频直采架构、高采样率ADC/DAC及丰富的DSP资源,在多通道同步精度、动态范围及系统稳定性等关键指标上表现出色,展现了国产FPGA在高端雷达应用中的硬核实力与供应链自主价值。

b0c1d2的博客 723

ASP.NET应用程序级缓存的设计思路与实现

【如果有现成的开源或免费缓存组件,要告诉我哦】背景页面包含许多需要显示数据库数据的控件,每次打开页面的效率都很低目标 减少页面响应时间,从而提高用户访问速度 缓存应在用户访问页面之前起作用,而不是像ASP.NET窗体/用户控件缓存那样随用户访问被动创建 能提供全局的缓存策略配置

UNO 4575

中国IP发展之面面观

谢学军/邱善勤2006-1-25 9:29:28电子经理世界       IP远没有我们当初想象的那么简单   当SoC设计方法学刚刚传到国内的时候,学界为之欢呼雀跃,由于IP/SoC设计技术的使用,可以将发达国家用几年甚至十几年积累起来的设计技术直接为我所用,使中国的集成电路跳过漫长的积累阶段,迅速站到较高的起点上。因此在当时看来,IP/SoC设计技术是我国提升设计水平、发展

klxdmm305的专栏 1188

跨模态行人重识别实战:Python复现SYSU-MM01官方评估协议

本文详细介绍了如何用Python复现SYSU-MM01数据集的官方评估协议,以解决原Matlab代码在Python生态中不便使用的问题。文章深入解析了数据集的`indoor`与`all`两种评估模式,并提供了完整的Python代码实现,包括特征加载、相似度计算、Rank-k与mAP指标计算等核心步骤,确保评估结果与官方Matlab版本完全一致,助力跨模态行人重识别研究。

weixin_29081163的博客 99

MasterPage之超严重Bug——将导致窗体内带有回发事件的控件无法回发事件——以及解决方案

这个问题已经有人在msdn上发表了,它的现象为: 当用户访问1、使用了MasterPage的Web窗体2、并且窗体内含带有回发事件的Web服务器端控件(比如LinkButton,这是很常见的,在DataGrid里用得太多了)那么1、页面打开时,IE会报JavaScript脚本错误——某行某个字符后期待";"2、点击那些带有回发事件的Web服务器端控件(比如翻页时),IE会再次提示脚本错误——第1行

UNO 4053

Agent + 监控平台:自动诊断告警根因

根因分析、智能监控、AI Agent、告警风暴、异常检测、可观测性、故障诊断在现代分布式系统中,快速定位和解决问题是维持系统稳定性的关键。传统的监控系统虽然能够生成大量告警,但往往缺乏对告警根因的自动诊断能力,导致运维团队在告警风暴中难以快速定位问题。本文深入探讨了将AI Agent技术与监控平台结合,实现告警根因自动诊断的技术架构、理论基础和实现方法。我们将从第一性原理出发,分析根因诊断问题的本质,介绍基于Agent的智能监控系统设计,并通过实际案例展示其应用价值。文章同时涵盖了从理论到实践的全链路,包括

AIGC应用创新大全的博客 304

【MasterPages实用技巧】为模板增加前端控制①——自动生成页面标题

上一回我们已经了解了MasterPages的基本使用方法,但是在实际使用过程中我们也会发现,这样的模板还无法满足要求。笔者首先遇到的问题是页面标题。 对于使用模板的Web窗体来说,它的页面标题应该怎样写?一般情况下,页面标题由HTML的标准元素TITLE标记指定,它存在于HEAD标记内。可现在只有模板控件内存在完整的HTML标记,其他窗体都仅仅是通过MasterPages“引用”了这些公共的HT

UNO 3882

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 895

鲁棒优化 (Robust Optimization) 算法详解及案例分析

鲁棒优化是一种用于处理不确定性优化问题的方法。其目标是在不确定性参数的可能取值范围内,找到一个对不确定性具有鲁棒性的解。

闲人编程的博客 4327

【MasterPages实用技巧】使用MasterPages实现Web窗体模板

如果你是一个网页开发人员,面对大量含有重复内容的页面,你一定希望能利用“模板”定义网页内的公共部分,而每一个页面只需要完成其特有的内容,通过模板生成最终的页面。 熟悉Dreamweaver的网页开发人员都会喜欢其中的模板(Template)功能。但是当我们转换到了ASP.NET平台,却不得不使用一个基本上只能算是文本编辑器的微软开发环境(当然这应该是一个最完美的文本编辑器),微软在图形化网页设计方

UNO 3777

Qt C++ 电子海图与作战叠加(Overlay)系统

lab_pos->setText(QString("坐标: X%1 Y%2").arg(p.x(),0,'f',0).arg(p.y(),0,'f',0));lab_distance->setText(QString("距离: %1 海里").arg(dist,0,'f',1));lab_bearing->setText(QString("方位: %1°").arg(bear,0,'f',1));// 绘制S-57海图基底。scene->addText("封锁线").setPos(450,180);

寒寒豆豆软件公司的博客 496

ASP.NET拾萃——服务器端控件篇(二)

技巧二:掌握控件的客户端属性及事件 经常在网上看到类似的问题:如何让ASP.NET服务器端控件响应客户端事件? ASP.NET服务器端控件能够响应服务器端事件,使我们能够像编写Windows程序一样编写网页。可有时我们并不需要让客户端运行的控件和服务器发生交互,这样做的开销是很大的:不仅占用网络带宽、服务器的CPU资源,还会产生一次PostBack导致客户端浏览器“刷新”影响界面效果。 如果直接在

UNO 3599

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ASP.NET是微软继MFC之后最无用的框架

【我的这种看法仅针对ASP.NET】MFC做了什么?通过宏提供OOP,以及:封装——   1. WIN32消息循环   2. 回调函数ASP.NET做了什么?提供.NET组件访问,以及:封装——   1. HTML代码(成为"runat=server"控件)   2. 控制b/s之间往返数据所使用的回发javascript(成为__doPostBack)ASP.NET的封装隐藏了许多HTML细节,

UNO 3566

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用ASP.NET开发遵循HTML/XHTML+CSS规范的的Web应用

系统从外到内可以分为: Web应用层作用:从.NET Framework得到客户端的Http请求,并向.NET Framework输出页面的HTML代码内容:ASP.NET窗体、ASP.NET用户控件(UserControl)以及其他页面所需要的资源 控件层作用:为应用层提供通用的界面控件,管理其内部控件并对外输出其自身的HTML代码内容:ASP.NE

UNO 3303

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【MasterPages实用技巧】为模板增加前端控制②——自动注册客户端全局脚本

让我们先来理解“全局”二字的含义。 HTML页面可以定义客户端脚本,为页面外观提供丰富的可视化行为和逻辑,客户端脚本可以写在或中。写在中的脚本就是文本所指的“全局”脚本,为什么说它是全局的呢?因为中定义的客户端脚本函数可以在中任何地方被访问,而在中函数外部定义的客户端脚本,也能在页面加载后的第一时间,按顺序被浏览器执行,而且能够访问页面中的全部对象。相对的,中的脚本只能按顺序执行,其中定义的函数只

UNO 2978

为什么要自动生成代码?

为什么要自动生成代码?参照Ruby on Rails完全可以做成一个runtime mvc framework for .NET支持数据库增删改查以WebControl为用户提供良好的设计时环境

UNO 2698

runtime mvc framework for .NET

为什么要自动生成代码?参照Ruby on Rails完全可以做成一个runtime mvc framework for .NET支持数据库增删改查以WebControl为用户提供良好的设计时环境未完待续

UNO 2689

ASP.NET拾萃——服务器端控件篇(序)

我们知道,ASP.NET的Web窗体新增了对服务器端控件的支持,其特征是在控件的HTML标记内加入了runat="server"属性。拥有这个标记的控件,其实例将在服务器端生成,由.NET框架负责转换为普通的HTML标记并输出至客户端。这个转换的过程是ASP.NET一个极为重要的基础。为什么呢? 熟悉HTML开发的朋友应该非常了解编写动态网页所需要的控件(FORM、INPUT……)。而ASP.NE

UNO 2511

Duwamish 7 初探——数据流程

Duwamish 7是微软的一个基于ASP.NET的分布式应用程序范例。由于工作上的原因,本人不得不对其研究一二。有所心得,不敢独乐,故于此与众位分享之。一并探讨ASP.NET,万望众位达人不吝赐教,。btw 在MSDN.NET中有其结构与流程详解,本人在此基础上总结心得,并对其中不甚明了之处做一补充,若有疑问可查阅之。Duwamish的若干个核心文件:SystemFramew

UNO 2470

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 340

仿muduo实现高并发服务器——EchoServer完成

本文介绍了一个纯头文件实现的 Reactor 服务端骨架,核心结构从 Buffer(双下标缓冲区)出发,依次封装 Socket(RAII 封装 fd)、Channel(事件与回调绑定)、Poller(epoll 封装)、TimerTask/TimeWheel(秒级时间轮)、EventLoop(事件循环 + 任务队列 + eventfd 唤醒),并集成 LoopThread/Pool、Connection、Acceptor 与 TcpServer。通过 EchoServer 示例展示业务逻辑仅需绑定三个回调即

深入探究的博客 379

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 419

【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork

本文详解多进程TCP服务器的实现原理,从单进程并发瓶颈出发,通过fork分离连接接收与服务职责。重点解析文件描述符继承机制、僵尸进程问题及双重fork解决方案,最终构建高效、稳定的多进程服务器模型,并说明服务器重启时可能因端口未释放导致绑定失败的原因。

2402_87731470的博客 2375

主从 Reactor 高并发服务器实战 (三):服务器套接字Socket模块详解与实现

本文实现了一个封装完善的Socket模块,将socket→bind→listen→accept等复杂操作收敛为简洁的类接口。通过RAII机制自动管理文件描述符生命周期,避免资源泄漏;提供CreateServer等便捷函数简化服务端创建流程,并支持非阻塞模式与属性设置。模块设计注重安全性与易用性,有效解决样板代码重复、错误处理分散等问题,为后续网络通信模块奠定坚实基础。

dasdasfv的博客 204
上一篇: ASP.NET拾萃——服务器端控件篇(序)
下一篇: ASP.NET拾萃——服务器端控件篇(二)
uno
uno
博客等级 码龄26年 14粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值