在ASP.Net中应用Javascript

ASP.NET中Runat服务器属性与JavaScript的交互应用 在Web开发中,服务器控件是ASP.NET框架中的核心组件,它们能够在服务器端执行逻辑,并通过HTML标签表现出来。这些控件支持在服务器端声明性地编写事件处理代码,并在需要时与客户端脚本交互。ASP.NET框架为服务器控件自动分配ID,以保证服务器端代码可以引用这些控件。这个ID生成规则是基于控件所在的命名容器(NamingContainer)和控件在容器内的索引。为了确保ID的唯一性,ASP.NET会生成一个由容器名称、索引和随机生成的数字组成的ID字符串。 阅读详情

概要

本文结合示例讲述了在ASP.net应用程序中如何利用客户端的Javascript脚本提高程序的执行效率并实现更多的功能。

一、ASP.Net与Javascript

.Net是微软公司下一代的战略核心,ASP.Net是.Net战略在Web开发方面的具体实现。它继承了ASP的简单性和易用性,同时克服了ASP程序结构化较差,难于阅读和理解的缺点。特别是服务器端控件和事件驱动模式的引入,使得Web应用程序的开发更接近于过去桌面程序的开发。

在各种各样介绍ASP.Net的文章和书籍中,都把重点放在了服务器控件和.NetFrameworkSDK上,因为这是ASP.Net中最新和最具革命性的改进;与此相反,在过去的Web开发中占据重要地位的客户端脚本Javascript(也包括VBScript)则鲜有提及,似乎有了服务器端程序,已经不需要客户端脚本了。但是,服务器端的程序毕竟需要一次浏览器与Web服务器的交互,对于ASP.Net来说,就是一次页面的提交,需要来回传送大量的数据,而很多工作,比如输入验证或者删除确认等,完全可以用Javascript来实现。因此,探讨在ASP.Net中如何使用Javascript仍然很有必要。


二、Javascript的应用示例

1.为页面上的某个服务器控件添加Javascript事件

服务器控件最终生成的仍然是普通的HTML,比如<asp:textbox>生成inputtext。表单中的每个HTML控件都有它自己的Javascript事件,比如Textbox有onchange事件,Button有onclick事件,Listbox有onchange事件等。要想为服务器控件添加客户端的事件,需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的一些标记。假设WebForm上有一个保存按钮btnSave,希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等),则应在Page_Load事件中添加如下代码:

ifnotpage.isPostBack()then

btnSave.Attributes.Add(“onclick”,”Javascript:returnconfirm(‘Areyousuretosave?’);”)

endif

要注意的是‘return’,这是不可省的,否则即使用户点了取消,数据仍然会保存。


2.为Datagrid中的每一行添加Javascript事件

假设Datagrid的每一行有一个删除按钮,希望在用户点此按钮时提示用户是否确实要删除此条记录,以防用户点错了行,或仅仅是无意中点了删除按钮。

无论这个删除按钮是什么名字,都不能象上个例子那样直接引用,因为每一行都有这样一个按钮,它们是Datagrid中的子控件。在这种情况下,需要用到Datagrid的OnItemDataBound事件。OnItemDataBound事件发生在Datagrid的每一行数据绑定到Datagrid之后(即一行激发一次)。首先在Datagrid的声明中添加如下代码:

<asp:datagridid="grd1"runat="server"OnItemDataBound="ItemDataBound">

…Columnsdefinitionhere

</asp:datagrid>此处说明OnItemDataBound事件发生时调用ItemDataBound方法,在代码后置文件中添加此方法的定义:


SubItemDataBound(ByValsenderAsObject,ByValeAsDataGridItemEventArgs)

Ife.Item.ItemType<>ListItemType.HeaderAnde.Item.ItemType<>ListItemType.FooterThen

DimoDeleteButtonAsLinkButton=e.Item.Cells(5).Controls(0)

oDeleteButton.Attributes("onclick")="javascript:returnConfirm('Areyousureyouwanttodelete"&DataBinder.Eval(e.Item.DataItem,"m_sName")&"?')"

EndIf

EndSub

由于Datagrid的标题行和脚注行也会激发此事件,所以首先判断激发此事件的行不是标题行和脚注行。这里假设Delete按钮位于Datagrid的第6列(第一列是0),且Datagrid的Datasource中包含名为”m_sName”的列


3.引用编辑状态下的Datagrid中的控件

Datagrid的内置编辑功能使得当记录的字段较少时的一种编辑方法。用户不必进入一个单独的页面编辑记录,而是直接点编辑按钮就可以使当前行进入编辑模式。而另一方面,有一些Javascript程序需要引用控件的名称。比如,很多程序在需要用户输入日期时都提供一个日期控件以保证日期格式的合法性,当用户点控件图标时弹出一个新窗口供用户选择日期。此时需要把显示日期的文本框的ID提供给新窗口,以便当用户选择日期后值可以回填到文本框中。

如果是普通的服务器文本框控件,它的ID与生成的HTML输入框的ID是相同的;但是在Datagrid的编辑状态下,两个ID并不相同(其道理与上例相同),这就需要用到控件的ClientID属性。

ProtectedSubItemEdit(ByValsourceAsObject,ByValeAsSystem.Web.UI.WebControls.DataGridCommandEventArgs)

DimsDateCtrlasstring

sDateCtrl=grd1.Items(e.Item.ItemIndex).Cells(2).FindControl("txtDate").ClientID

EndSub

这里假设ItemEdit方法是Dategrid的OnItemEdit事件处理程序,同时在Datagrid的第三列包含一个名为txtDate的服务器文本框控件。


4.引用ASP.Net自动生成的Javascript程序

所谓的“服务器端控件”是针对开发人员的,在生成的HTML源程序中并没有服务器和客户端之分,都是标准的HTML,DHTML和Javascript。它之所以能响应用户的输入是因为每个控件的事件处理程序最终都生成了一段脚本,此脚本重新提交页面使得WebServer有机会再次响应并作出处理。通常情况下我们不必知道此脚本是什么也不必直接调用此脚本,但在有些情况下,适当地调用此脚本可以简化许多工作。请看下面两个例子。

●点Datagrid的任一位置以选中一行

Datagrid提供了一种内置的选择按钮,当点此按钮时选中当前行(可以设置SelectedItemStyle属性以使当前行有不同的外观)。但用户可能更习惯于点任意一个位置都能选中一行,如果完全自己实现这个功能相当烦琐。一个好的思路是添加一个选择按钮,但使此列隐藏,当点任一行时调用此按钮产生的Javascript脚本。

SubItem_Bound(ByValsenderAsObject,ByValeAsDataGridItemEventArgs)

DimitemTypeAsListItemType

itemType=CType(e.Item.ItemType,ListItemType)

If(itemType<>ListItemType.Header)And_

(itemType<>ListItemType.Footer)And_

(itemType<>ListItemType.Separator)Then

DimoSelectAsLinkButton=CType(e.Item.Cells(5).Controls(0),LinkButton)

e.Item.Attributes("onclick")=Page.GetPostBackClientHyperlink(oSelect,"")


EndSub

这里假设选择按钮位于第6列。e.Item代表了一行,从生成的HTML上看就是在每个<tr>里增加了一个onclick事件。Page.GetPostBackClientHyperLink方法返回页面中LinkButton控件产生的客户端脚本,其中第一个参数是Linkbutton控件,第二个参数是传递给此控件的参数,通常为空。如果不是LinkButton控件,有一个类似的函数GetPostBackClientEvent,读者可以参考MSDN。

●服务器产生的脚本与手工添加的脚本冲突

服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML<Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。

Page_Load方法如下:

DimsCmdasstring

sCmd=Page.GetPostBackClientHyperlink(btnUpdate,"")

Ifnotpage.isPostbackthen

Dropdownlist1.Attributes.add("onchange","ConfirmUpdate("""&sCmd&""")")

Endif


ConfirmUpdate函数如下

<Scriptlanguage=”javascript”>

functionConfirmUpdate(cmd){

ifconfirm(“Areyousuretoupdate?”)

eval(cmd);

}

</Script>

这里利用了Javascripteval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。

三、结束语

以上简单讨论了在ASP.Net中插入Javascript的几种情况。合理地在服务器程序中插入客户端的Javascript脚本,可以提高程序的运行效率并提供更友好的用户界面。

Python爬虫+HTML构建电商比价系统:从数据采集到前端展示全流程实战 在数据驱动的互联网时代,网络爬虫技术是实现数据自动化采集的核心工具。其基本原理是通过模拟浏览器行为,向目标网站发送HTTP请求并解析响应内容,从而高效、精准地获取结构化信息。这项技术的核心价值在于打破信息壁垒,将散落在各处的数据聚合起来,为分析和决策提供支持,广泛应用于市场分析、价格监控和竞品研究等场景。以电商比价为例,这正是爬虫技术的一个典型应用。通过Python的requests库发起请求,结合BeautifulSoup或lxml解析HTML文档,可以实时抓取京东、淘宝等平台的商品价格与详情。随后,将清 阅读详情

相关推荐

Matlab中eig内置函数转为C语言

本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。 首先在MATLAB端创建入口函数保存为eigvalue.m: 打开MATLAB Coder,添加入口函数: 3.在定义输入类型窗口中,需要添加输入数据来训练...

u011441044的博客 3516

如何在ASP.NET中使用JavaScript

ASP.NET中JavaScript 在ASP.NET页面中使用JavaScript可以使您的应用程序看起来运行更快,并防止对服务器的不必要调用。 JavaScript可用于在用户浏览器中执行客户端功能,而无需回叫服务器。 从而节省资源。 下面的示例演示如何使用ASP.NET按钮来触发修改ASP.NET TextBoxJavaScript调用。 例 以下示例将向您显示: 如何向页面动...

IT与开发人员的地盘 3111

蓝牙钥匙 第48次 全面解析防中继攻击保护:从原理到防护技术实践

中继攻击已成为物联网安全领域的重要威胁,2023年全球相关损失达数十亿美元。本文深入分析中继攻击原理,揭示其通过转发设备延长通信距离而不破解加密的特点。重点探讨两种关键防护技术:基于距离测量的方法(包括UWB超宽带技术)可精确检测异常距离;基于时间戳的挑战-响应机制则通过严格时间窗口识别中继延迟。文章还提出多层次防护体系构想,结合AI异常检测和量子安全协议等前沿技术。研究显示,集成多种防护技术并遵循行业标准是应对中继攻击的有效途径,为物联网设备安全提供重要参考。

IT深耕十余载,大道之简 1830

Asp.Net之JavaScript学习(三)

1.样式操作 通过修改元素的style属性来操作样式,js中的style对象提供了很多属性,对应着css的相关样式,这里的写法与css中基本相同。 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>01样式</title> <style> .d1 { color: red; .

挑战不可能的我 413

MuJoCo柔性体仿真实战:从FlexComp建模到自定义模型导入

柔性体仿真是机器人交互研究中不可或缺的一环,MuJoCo作为高精度物理求解器,凭借高效的求解速度与批量并行能力,成为强化学习与软体抓取任务的热门选择。其FlexComp机制将连续材料离散为粒子-约束系统,以较低建模成本模拟布料、软组织等形变行为,相比Gazebo等平台更具实时性与可扩展性。技术价值体现在自定义柔性体建模与导入流程中:通过XML配置网格密度、间距与材料参数,即可生成贴合任务需求的软体垫子或硅胶抓手。在柔性抓取、颗粒抓手、医疗仿真等场景中,该方法能快速构建可训练的环境。围绕环境搭建、FlexCo

weixin_29045585的博客 161

LIN总线CAPL函数实战——动态控制报文发送(linDeactivateSlot与linActivateSlot)

本文深入解析了LIN总线测试中动态控制报文发送的核心CAPL函数linDeactivateSlot与linActivateSlot的实战应用。通过详细拆解函数参数、生效范围及限制,并结合故障注入、功耗测试等实际场景的代码示例,指导测试工程师在仿真LIN主节点时,灵活调度报文发送,实现高效自动化测试。

weixin_29255731的博客 349

【ASP.NET Core 基础知识】--前端开发--使用ASP.NET Core和JavaScript进行通信

AJAX(Asynchronous JavaScript and XML)是一种用于在不重新加载整个网页的情况下,与服务器交换数据并更新部分页面的技术。它将JavaScript、XMLHttpRequest对象(或最近的Fetch API)、HTML和CSS等技术组合在一起,使得在网页中实现异步数据传输成为可能。AJAX的出现改变了Web开发的方式,使得网页变得更加动态、交互性更强,用户体验得到了极大的提升。核心原理传统的Web页面在与服务器交互时,通常是通过整个页面的刷新来实现。

喵叔 2532

金蝶云ERP远程办公指南:零公网IP实现安全内网穿透访问

本文详细介绍了如何利用内网穿透技术,在无需公网IP和复杂路由器设置的情况下,安全远程访问内网部署的金蝶云ERP系统。通过使用cpolar工具,逐步指导用户创建加密隧道、配置固定域名,并实现管理中心与数据中心的远程登录,有效解决了企业员工在外出或居家办公时的核心业务系统访问难题。

weixin_29229261的博客 269

Vue.js与ASP.NET的结合,实现企业级应用的开发和部署

Vue.js和ASP.NET是两个在前端和后端开发中广泛使用的技术,将它们结合起来可以为企业级应用的开发和部署带来诸多优势。Vue.js和ASP.NET结合,可以为企业级应用的开发和部署带来许多好处。通过上述示例,我们可以看到Vue.js和ASP.NET的结合能够快速构建起一个企业级应用,并通过ASP.NET进行开发和部署。上述代码中,我们使用了ASP.NET的“UseStaticFiles”方法来配置ASP.NET使用静态文件,然后通过“Run”方法返回Vue.js的入口文件“index.html”。

风清扬的专栏 2194

文件上传漏洞攻击与防范方法

文件上传漏洞攻击与防范方法 文件上传漏洞简介: 文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。 文件上传漏洞危害: 上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传...

m0_38103658的博客 4万+

TOGAF架构内容—TOGAF 内容框架和企业元模型

TOGAF架构内容—TOGAF 内容框架和企业元模型

深圳市多克创新科技有限公司 1664

JavaScript、jQuery在ASP.NET中的应用

<br />JavaScript、jQuery在ASP.NET中的应用<br />一、JavaScript(帮助文档)<br />1.在Web页面中使用JavaScript的方法<br />(1)、在HTML中嵌入JavaScript:<br />          如: <script language="javascript"> document.write("Hello World!");</script><br />(2)、链接JavaScript文件:<br />          如: //网页

巴萨,足球的艺术 701

Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Linux 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装Node.js 2.2 步骤二:安装git 2.3 步骤三:安装并配置OpenClaw 2.4 步骤四:配置OpenClaw 2.5 步骤五:配置模型 2.6 步骤六:对话 3. 后续使用步骤 4. 报错解决方案 5. OpenClaw的卸载

weixin_43178406的博客 10万+

在asp.net应用javascript

在ASP.Net中应用Javascript    2003-07-14 14:32:07   戴泽峰  概要 本文结合示例讲述了在ASP.net应用程序中如何利用客户端的Javascript脚本提高程序的执行效率并实现更多的功能。一、ASP.Net与Jav

186

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

上一篇: ASP.NET中不定级动态菜单的实现
下一篇: ASP.NET中在线用户统计的简单实现及讨论
晓梦庄子
博客等级 码龄19年 4粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓梦庄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值