将JavaScript事件绑定到ASP.NET对象

ASP.NET框架具有强大的功能和不错的灵活性。你可创建服务器端代码来完成任何类型的任务,但在许多任务中,仍然只有客户端JavaScript才最方便。在ASP.NET Web窗体中添加JavaScript类似于把它添加到其他任何类型的网页中。但是,将代码绑定到ASP.NET窗体元素时,却需要一定的技巧。
为什么要使用JavaScript?

客户端JavaScript的优点在其他许多文章中都有详尽的论述。其实最主要的优点就是性能。虽然能用C#或VB.NET来开发相同的功能,但这要求和服务器建立一次额外的往返行程,所以必然损失一定的性能。相反,JavaScript代码和网页一起下载,并由浏览器负责执行,不会牵涉到多余的服务器调用。我们经常用这种技术进行字段验证、确认对话框以及打开其他窗口。

下面将讲解如何将JavaScript包括到一个标准的网页中。然后,我们准备采取一些额外的步骤,让JavaScript能够与ASP.NET Web窗体良好地协作。

传统Web窗体

普通网页含有各种标准化的区域,比如head和body。通常,JavaScript函数要放到网页的head部分,使其在body之前加载。等body加载之后,立即就能使用它们。对函数的调用可在body的各个HTML元素中进行。例如以下JavaScript函数:
 
function confirmSubmit() {
var doc = document.forms[0];
var msg = "Are you sure you want to submit this data?";
if (confirm(msg)) {
doc.submit();
} else {
// do nothing
} }

 
该函数的作用十分简单:它要求用户确认是否想提交文档。如果在确认对话框中单击Yes,就提交文档;否则什么事情都不发生。该函数可轻松地绑定到一个HTML提交按钮:
 
<input type=”button” value=”submit” name=”butSubmit” onClick=”confirmSubmit();”>
 
用户单击提交按钮后,会出现如A所示的消息。

图A

示范JavaScript确认对话框

 

虽然上述JavaScript非常简单,但你随时都可对其进行增强,以实现任何需要的逻辑。由于它避免了对服务器的额外调用,所以有助于提升性能。但是,在ASP.NET Web窗体中添加这种类型的功能时,却不如在普通Web窗体中添加时直观。

首先,函数要添加到窗体的head部分(参见B)。之后,必须从一个ASP.NET控件中调用它。图B展示了按钮声明。

图B

示范ASP.NET Web窗体

最关键的一步就是将ASP.NET按钮绑定到JavaScript函数。这需要使用ASP.NET按钮UserControl对象的Attributes属性。Attributes属性提供了一个Add方法,允许为按钮添加事件。为此需要使用以下VB.NET代码:
 
butSubmit.Attributes.Add("onClick", "return confirmSubmit();")
 
图C展示了Visual Studio .NET环境中的VB.NET代码。

图C

为按钮添加函数


我个人认为这种语法容易使人混淆,因为我已习惯了标准的Web窗体语法。但是,如果将标准onClick事件直接输入ASP.NET Web窗体(HTML源代码)中会导致错误。所以,我只好研究一下文档,了解正确的语法是什么。

当然,代码可以轻松地扩展。ASP.NET提供了验证控件,但使用本文的代码,可轻松地添加和引用JavaScript。下面来看看如何在提交之前验证两个Name字段。

下面对第一个例子的示范代码进行扩展,在其中添加两个文本字段,如D所示。这些字段是用以下JavaScript代码来验证的:

 
function valSubmit() {
var doc = document.forms[0];
var msg = "";
var msg = "";
if (doc.txtFirstName.value == "") {
msg += "- First Name" + "\n";
}
if (doc.txtLastName.value == "") {
msg += "- Last Name" + "\n";
}
if (msg == "") {
doc.submit();
} else {
var valMsg1 = "The following required fields are missing.";
var valMsg2 = "Please complete and resubmit."
alert(valMsg1 + "\n\n" + valMsg2 + "\n\n" + msg);
return;
} }

 
这是一个非常基本的函数。它检查Name字段中的字符。如果字段不为空,就提交文档。否则会显示一条消息,要求用户填写字段并重新提交。函数通过相同的语法绑定到按钮:
 
butSubmit.Attributes.Add("onClick", "return valSubmit();")

图D

添加好的文本字段

好戏才刚刚开始

使用按钮UserControl对象的Attributes属性来绑定一个JavaScript事件,这只是该属性众多应用中的一种。还可用Attributes来更改与控件绑定的各种颜色,以及应用级联样式(CSS)元素等等。详细情况可参考联机帮助或者其他.NET文档。

不要重复别人的劳动

Internet富含丰富的JavaScript代码,它们可用于完成几乎任何任务,所以完全没必要重复别人的劳动。虽然ASP.NET十分强大,但作为我们亲密的老朋友,JavaScript的作用也不可小觑,它能帮助我们完成常见的任务,并由客户端来减轻服务器的负担。

posted @ 2006-12-19 11:27  '.Elvis.'  阅读(206)  评论(0编辑  收藏  举报