2024年3月29日发(作者:)

・ 

36 ・ Computer Era No.5 201 1 

ASP.NET按钮控件中CommandName和CommandA『gumenl用法 

黄小花 

(江西交通职业技术学院信息工程系,江西南昌330013) 

摘 要:在Web页面中,要判断用户单击了一组按钮中的哪个按钮,大多数情况下,可以利用命令按钮提供的 

CommandNarne和CommandArgument两个属性来完成。这两个属性是ASP.NET中创建命令按钮控件的两个重要属性。利 

用它们在程序中传递参数,通过引用参数值可,方便地在同一个事件过程确定哪个按钮被单击了。文章主要围绕 

CommandNarne和CommandArgument用法,介绍了如何在Click事件和Command事件中获取值的方法及正确使用它们应 

该注意的问题。 

关键词:按钮控件属性;CommandName;CommandArgument;参数传递 

Usage of ASP.NET Button Control CommandName and CommandArgument 

HUANG Xiao—hua 

(Dept.ofInformation Engineering, , V&T College of Communication,Nanchang,Jiangxi 330013,China) 

Abstract:In a Web page,tO judge which button in a group of buttons is clicked by user can be achieved by using 

CommandName and CommandArgument properties provided by command button in most cases.The two properties are important 

for creating command button control in ASP.NET,they can be used to pass arguments in program,then which button is clicked 

Call be easily determined through referencing argument values in the same event procedure.Focusing on the usage of 

CommandName and CommandArgument,how to get the vales from Click and Command events,as well as the problems that 

should be noticed is introduced. 

Key words:button control properties;CommandName;CommandArgument;argument passing 

0引言 

1 CommandName和CommandArgument的主要功能 

web应用程序和用户进行交互时,按钮主要用于提交数据 

“命令”按钮的优点就在于提交程序和响应事件的同时能 

及响应事件,在这个过程中,按钮控件是非常必要的,它是组成 

够传递参数。传递参数必须通过CommandName与 

交互式动态网页的最基本元素之一。通过它可以方便地将客 

CommandArgument属性来完成。CommandName用来给出或 

户端的数据传给服务器,并且在程序中触发事件,执行相应的 

没置Button控件的命令名称,是引发事件的源的命令,相当于 

事件过程,从而完成相关的操作。 

text。c0mmandArgument用来给出或设置Buaon控件的命令参 

在ASP.NET中,通过使用Button控件在网页上既可创建 数,是引发事件的源的命令参数,相当于value值。这两个值为 

“提交”按钮,也可以创建“命令”按钮。这两种按钮的主要区别 

只读的,需要在设计阶段指定,在程序中不能动态修改。 

在于“提交”按钮不支持CommandName(命令名称)和Com— 

CommandName属性和CommandArgument属性有着非常 

mandAr譬ument(命令参数)两个属性。 重要的作用。例如:假如一个页面中有100个按钮,在需要在服 

默认情况下,直接创建的Button控件是“提交”按钮。在没 

务器端需要判断到底是哪个按钮被单击。如果没有这二个属 

有指定单击事件前,它只是将网页中的对象回发到服务器。可 

性,必须检测每个按扭,用一一列举的方法,给每一个按钮的 

以为其指定Click事件,以便以编程方式控制在用户单击“提 Text属性或ID属性赋值,然后在程序中通过匹配Text属性值 

交”按钮时执行事件过程。 

或ID属性值,来判断到底是哪个按钮被单击了。虽然这种方 

如果要创建“命令”按钮,只需为Buuon控件指定 法是可行的,但是很繁琐,是不可取的。 

CommandName和CommandArgument两个属性的值。“命令”按 

有了CommandName属性和CommandArgument属性就可 

钮可以响应Command事件,通过事件处理程序,以便以编程方 

以方便地解决以上问题。首先给每个按钮的CommandName 

式控制在用户单击“命令”按钮时执行的操作。 

和CommandArgument属性赋不同的值,然后在按钮的 

除了提交数据和响应Command事件之外,更重要的是“命 

OnCommand事件中,通过数据类型为CommandEventArgs的形 

令”按钮具有与之关联的命令名CommandName和命令参数 

参e来获取单击每个按钮时传递过来的CommandName和 

CommandArgument,它可使用户在一个网页上创建多个Button CommandArgument的值,从而判断是哪个按钮被单击了。 

控件,并以编程方式确定单击了哪个Button控件,从而使这些 

控件能够响应相同的事件。此外还可以将CommandArgu— 

2在Click事件中获取CommandName和Command— 

ment属性与命令按钮一起使用,提供有关要执行的命令的附 

Argument的值 

加信息 

单击事件是按钮最典型的事件之一。当单击按钮时,会同 

计算机时代201 1年第5期 

时 ̄Click和Command两个事件,一般会先执行Click,后执行 

・ 37 ・ 

所以它们可以直接被获取。这也说明在OnCommand事件中参 

数是带值传递的。 

Command。这两个事件系统都可以获取CommandName和 

CommandArgument的值。以下介绍如何tEClick事件中获取值。 

先看以下两段程序。第一段程序创建一个按钮,该按钮设 

值应注意的问题 

置了CommandName和CommandArgument属性,并且按钮产生 

通过前面的例子,我们可以明白CommandName和 

了一个OnClick事件。 

<asp:Button ID=’。sport”runat=。’server'’CommandArgument= 

ick” 

”羽毛球”CommandName=”打”OnClick=”spot

cl

_

4正确获取CommandName和CommandArgument 

CommandArgument值的获取与所发生的事件及形参e的数据 

类型有关。如果指定的事件与e的数据类型不正确的话,在获 

取CommandName和CommandArgument值时将会出现错误。 

Text=”动作”/> 

第二段程序中定义了响应OnCli=k事件的事件过程 

“Sport

Click”,通过这个过程来获.驭CommandName和 

CommandArgument的值。 

Protected Sub Spo ̄

_

Click(ByVal sender As Object,ByVal e 

As System.EventArgs)Label1 Text=”你选择中的动作是” 

&sender.commandname&”具体的动作目标是” 

&sender.CommandArgument 

End Sub 

在OnClick事件中,有两个形式参数:sender为对象类型Ob— 

ject,e为包含事件数据类的基类EventArgs。由于EventArgs没 

有提供任何数据,所以不能通过形参e来获取值。但是可以通过 

形参sender来获取CommandName和CommandArgument的值。 

3在Command事件中获取C・3mmandName和 

GommandArgument的值 

下面介绍在OnCommand事件中获取值。首先通过上述第 

段程序创建一个设置好了CommandName和CommandArgu— 

ment值的按钮,该按钮响应OnCommand事件。 

<asp:Button ID=’’sport”runat=”server’’CommandArgument 

”羽毛球”CommandName=”打”OnCommand=”sport

click” 

Text=”动作”『> 

在上述第二段程序中定义响应OnCommand事件的事件过 

程“Sport_command”,通过这个过程来获取CommandName 

和CommandArgument的值。 

Protected Sub Sport

_

command(ByVal sender As Object, 

ByVal e As CommandEventArgs) 

Label1.Text=”你选择中的动作是”&e.commandname& 

”具体的动作目标是”&e.CommandArgument 

End Sub 

在OnCommand事件中,有两个形式参数:sender仍为对象 

类型o ect,而形参e为Command事件提供数据的 

CommandEventArgs类型。所以可以直接通过参数e来获取 

CommandName和c0mmandArgument的值。注意,这个方法使 

用的是CommandEventArgs,而不是常用的System.EventArgs。 

形参e获取值的方法与Command!EventArgs类密切相 

关。commandEventArgs类存储了和按钮事件相关的数据,并 

且可以在事件处理中通过CommandEventArgs类的属性来访问 

这些数据。简单地说,当按钮被单击后,这个按钮所触发的数 

据都被储存到服务器的CommandEventA ̄’gs类中,这样就可以 

访问CommandEventArgs类中的属性。而CommandName和 

CommandArgument是类CommandEventArgs的两个公共属性, 

以下将分析可能会发生的两种错误情况。 

在Onclick事件中,如果将形参e的数据类型由.EventArgs 

改为CommandEventArgs,虽然在程序中可以通过e直接引用到 

CommandName和CommandArgument属性,但在运行是会出现 

“没有与委托Delegate Sub EventHandler(sender As object,e 

As System.EventArgs)相同的签名”的错误。 

在OnCommand事件中,默认情况下,形参e为 

CommandEventArgs数据类型。如将形参e的数据类型改为 

EventArgs数据类型,则不能在程序中引用CommandName和 

CommandArgument属性,而且运行中会出现“没有与委托 

Delegate Sub CommandEventHandler(sender As Object,e As 

CommandEventArgs)相同的签名”的错误。 

以上两种问题出现的原因就是在控件的一些事件里面调 

用了函数,而这些函数的参数与该事件所要用到的参数类型不 

致,从而导致事件的重载均与委托不匹配。所以如果要在 

OnCommand事件中引用参数e的CommandName和 

CommandArgument属性,必须确保形参e的数据类型为 

CommandEventArgs。如果是Onclick事件,形参e的数据类型 

必须为EventArgs,该类型的e无法获取CommandName和 

CommandArgument的值,但可以通过sender参数来获取。 

5通过CommandName或CommandArgument的值 

确定单击了哪个按钮 

CommandName和CommandArgument最主要的用途在于 

单击按钮时可以传递参数。我们可以标记按钮,使代码能根据 

窗体上单击的按钮进行逻辑判断,让窗体上的多个按钮来处理 

个事件。下面通过一段相关的程序来说明,多个按钮如何同 

时响应一个事件以及根据CommandName的值判断哪一个按钮 

被单击了。 

首先通过下面程序清单构建3个Button控件来处理一个 

事件。 

1.<asp:Button ID=”BuRonl”runat=”server”Text=”选拯” 

OnCommand=”BuRonCommand”CommandName=”select”/> 

2.<asp:BuRon ID=“Button2“runat=“server'‘Text=“编辑” 

OnCommand=”Button

_

Command”CommandName=’’edit”,> 

3.<asp:Button ID=”Button3”runat=”server”Text=”删除” 

OnCommand=”ButtonCommand”CommandName=”delete”,> 

本段程序创建了三个按钮这里使用的是OnCommand事件, 

它们处理同一个Button—Command事件。那么事件应该如何确 

定单击哪个按钮呢?可以通过CommandName属性的值来确 

(下转第39页) 

计算机时代201 1年第5期 ・ 39 . 

(3)端点数区分 

识别时候的图像。 

定义端点如4.3节中,表示8连同域中,只用一个像素与其 

相邻,我们称之为端点。如2,5,7,6,9的端点数是2,而3,4的 

端点数是3。 

(4)端点分布域 

首先把单个数字分成上左、上右和下左、下右四个域。端 

图2 图3 

点分布域是指端点落在我们分好的一个域中。如6和9的区份 

图3是图2经过细化后的得到图像。在利用上述的方法进 

是:6的端点是分布在上域中,而9的端点分布在下域中。这样 

行识别的时候都能得到满意的识别结果,识别率达到98%以 

我们就可以很容易区分6和9的区别了。2和5的区分是:2的 

上;而且我们通过图1可以看出,在工业现场遇到的数字的形式 

端点分布在上左和下右两个区域,5的端点分布在上右和下左 

也是多样的和复杂的。这说明本文的方法具有兼容性强,准确 

两个域中,这样我们就能区分2和5了。 

率高的特点。通过使用matlabm 试验进行识别显示,运算的速 

(5)2和7的区分 

度也比其他的方法快,具有一定的实用性。 

由于7的写法不一样,因此,我们只能 垂直面投影法来区 

参考文献: 

分2和7。显然,7的投影上部分像素点与下部分像素点的比值 

[1】张晋阳等手背静脉图像骨架特征提取的算法【J].计算机应用,2007. 

是不一样的。 

27(1):152-154 

l 2 3 4 5 6 7 8 9O 

[2】拐志平数学形态学在空间格局图像骨架提取中的应用【Jl地 

球信息学,2003.32(5):411-413 

l己 L1 5 E]日马rl 

【3】黄凤岗,杨国,宋克欧.柔性形态学在图象边缘检测中的应用【J1.中国 

图像图形学报,2000.5(A)4:254~287 

【4】徐志平.基于交丈视觉皮质模型二值园像彬态学算法[J】计算机辅助 

图1仪表数字的数字与字体照示形式 

设计与图形学学报,2007.19(8):990~994 

从上面的分析中,我们发现最常见的上面的两种数字显示 

【5】戴汝为,郝红卫,肖旭红.汉字识别的系统与集成【M】.浙江科学技术出 

形式(图1所示),都符合上述的区分方法。 

版社.1998. 

[6】赵春晖,张兆礼,梅晓丹.现代园像处理技t-及Matlba实现【M】.人民邮 

3试验仿真及结果 

电出 ̄,2001.溯 

本文所采用的数字图像是对仪表表盘的数字和汉字 进行 

(上接第37页) 

定。在这个例子中,该屙I生拥有不同的值:select、edit和delete。 以在程序中获取CommandName和commandArgument两个属 

下一步创建这三个按钮要处理的Button—Command事件。 

性传递过来的值。具体获取值的方法可以在按钮的单击事件 

1.Protected Sub Button

Command(ByVal ̄ender As Object, 

中来完成。单击按钮既可以在Click中发生也可以在Command 

ByVal e As System Web.UI.WebControl ̄.CommandEventArgs) 

事件中发生;虽然在这两个事件中都可以获取CommandName 

2. Select Case e.CommandName 

和CommandArgument的值,但是方法却是不同的。在这两个 

3. Case”select” 

事件中要注意形参e的数据类型,形参e的数据类型必须与它 

4. Response.Write(”Button 1 was se!ected”1 

所处的事件相匹配,否则将会出错。 

5. Case”edit” 

参考文献: 

6 Response.Write(”Button 2 was se,ected”) 

7. Case”delete” 

[1】赵彦敏.ASP.NET程序员参考手册[M].清华大学出版社,2002. 

8 Response.Write(”Button 3 was se ected”) 

[2】(美)沃尔瑟著,谭振林等译.ASP.NET3.5揭秘(卷2)【M].人民邮电出版 

社.2009. 

9. End Select 

10.End Sub 

【3】苏英如.ASP.NET编程技t-与交互式网页设计【M】.中国水利水电出 

在这一事件过程中,通过CommandName传递过来的值,可 

版社出版社 2004. 

【4】唐植华,郭共峰ASP.NET 2.0动态网站开发基础教程(C 2005篇) 

以方便地确定当前单击了哪个按钮,从而执行相应的操作。 

【M】.清华大学出版社,2008 

6结束语 

【5】华夏,陈新寓ASP NET案例实训教程【M】科学出版社,2009. 

提交按钮与命令按钮的主要区别在=F:它们是否有Com— 

【6】刘端阳,汪杰ASP.NET网络开发实用工程案例【M】人民邮电出版 

社,2008 

mandName和CommandArgument两个属性 。设置了这两个属 

性的按钮称为命令按钮,它具备了提交铵钮的所有功能,还可