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

群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南 本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。 阅读详情
技巧一:在客户端的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中的内容了。

【GEE实战指南】Python本地API配置避坑与一站式环境搭建 本文详细介绍了Google Earth Engine(GEE)Python本地API的配置避坑指南与一站式环境搭建流程。通过conda创建隔离环境、账户认证关键步骤、初始化代码的正确写法以及实战测试案例,帮助开发者快速掌握GEE Python API的配置技巧,避免常见错误,提升地理空间数据分析效率。 阅读详情

相关推荐

3D打印机之Marlin固件配置

一、Marlin固件必要配置 打开Configuration.h文件,使用VS code的搜索功能来修改下面的参数。 配置波特率 #define BAUDRATE 250000 配置串口波特率,一般不修改。上位机的波特率要和这个一致才能正常通讯。 2. 配置主板类型 第 134 行 #define MOTHERBOARD BOARD_MKS_GEN_L 找到 boards.h 这个文件打开,就可以看到支持的主板类型。3d打印机主控板类型非常多,每个板子硬件连接都可能不同,所以这个参数必须要跟你自己的板子

acktomas的博客 2万+

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

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

wubing1111的专栏 736

如何在INCA中修改标定量的初始值,并刷回控制器

测试过程中,有些时候,标定量来不及修改,这就需要修改标定量的初始值了,又不想打开模型重新编译,因此直接在INCA中修改,然后再刷回控制器,就成了最佳选择,之前也学过,长时间不用,忘记怎么搞了,最近又用到了,这次记录一下,以后用到的时候,就不用在网上东翻西找了。截止到2023年11月24日,共找到了两种方法可以实现修改。

weixin_43406519的博客 4199

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

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

UNO 4575

ESP32 LVGL开发板例程使用记录:自制常用汉字字库(二)

1、将下载的文件移入工程文件中 ,路径为项目文件中 ”......\lib\lvgl\src\font“文件夹下。3、修改字库配置文件,文件名为lv_conf.h中的内容,向其中加入下面内容(位置可搜索注释块来找到地方)修改完成可以编译试试,看是否成功,如字库较大时编译出错,请使能:LV_FONT_FMT_TXT_LARGE。2、打开此文件,修改包含头文件的路径,不然会报错,修改方法可对照自己库中其他字库文件中的包含路径。导入完成后在VSCode工程中可以查看到此文件。上次说完了如何制作 字库.c 文件。

qq_43279097的博客 1957

fpga的希尔伯特变换实现

fpga的希尔伯特变换实现零.实现背景一.希尔伯特实现的基本原理2.实现1)matlab仿真1)fpga滤波器实现实现成本:fpga实现采用VIvado的FIR的IP核, 零.实现背景 因为今明工作项目需要使用到希尔伯特变换来处理问题,所以顺便就把设计流程和代码都整理下来,以便供他人使用。选用Xilinx的7系列板子,Vivado平台。 一.希尔伯特实现的基本原理 希尔伯特变换的物理意义十分简单:...

weixin_42219690的博客 1万+

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

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

UNO 4053

FAA和EASA在机载电子硬件适航中的发展历史与差异

FAA和EASA在机载电子硬件的适航审查中虽然存在一些差异,但通过近年来的合作,这些差异正在逐步缩小。两者通过。

qq_41854911的博客 745

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

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

UNO 3882

深度学习笔记——Transformer

本文详细介绍面试过程中可能遇到的Transformer知识点。

haopinglianlian的博客 1703

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

中国电子学会《全国青少年软件编程等级考试》C/C++编程(1~8级)历届真题解析。订阅后可阅读专栏内所有真题解析,真题持续更新中!

人生就是一个不断学习的过程 2万+

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

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

UNO 3777

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

UNO 3599

怀旧版电脑GBC模拟器

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

【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

自建 Git 服务器和裸仓库差在哪:要能提合并请求

在一台 Linux 上 git init --bare 就能自建 Git 服务器,但它只能推拉代码,没有网页、合并请求、评审和按仓库分配的权限。对照裸仓库和 AngusGit 各自能做什么,再走一遍在 AngusGit 上发起合并请求的最短路径,以及已有裸仓库怎么完整搬过来。

AngusTester 318
上一篇: 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、付费专栏及课程。

余额充值