2008-10-08 90 views
2

当使用ASP.Net控件设置客户端“onclick”事件时,是否有最佳做法?只需添加onclick属性就会导致Visual Studio警告:onclick不是该控件的有效属性。在Page_Load事件中通过代码隐藏工作添加它,但比我想要的更清晰。使用Javascript与ASP.Net控件

这是唯一的两个选择吗?有没有正确的方法来做到这一点,我失踪了?

谢谢! Eric Sipple

回答

2

**只是一个关于答案的提示:VS中的HTML验证通常是BS。它抱怨IRL工作的东西,即使这些东西是不好的做法。但有时你必须弯曲规则才能完成任务。

每个ASP.NET页面(2.0及更高版本)都附带ClientScriptManager。您使用此从服务器端代码注册JavaScript。您可以传入javascript,在页面加载后,在页面上的HTML控件全部出现在DOM中时,在控件上注册事件。

它在页面上呈现一个单一的统一位置来动态地添加javascript,这不是一件坏事。然而,它非常难看。

在ASP.NET服务器控件模型死亡的这段时间里,您可能想要设置事件的方式,它们将在ASP.NET MVC的将来。拿起jQuery的副本,并将其添加到您的网站。然后,您可以轻松地轻松注册您的活动:

<html> 
    <head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("controlId").bind("click", function(e) { /* do your best here! */ }); 
     }); 
    </script> 
    </head> 
    <!-- etc --> 
    </html> 
1

设置WebControl.Attributes["onclick"]的值是可以的。如果ASP.NET需要客户端click处理程序,它将连接由分号分隔的值。

2

您可以通过Javascript将事件添加到所需的HTML元素。这是最简洁的方式,因为它不会混合服务器的客户端技术&。此外,通过这种方式,许多处理程序可以注册到相同的事件(与onclick属性相反)。

基本上,代码将是

document.getElementById('myLovelyButtonId').attachEvent('onclick',doSomething) 

的Internet Explorer和

document.getElementById('myLovelyButtonId').addEventListener('click',doSomething,false) 

其他浏览器。 (doSomething是一个事件处理程序 - JavaScript函数)。这些呼叫应在窗口加载事件处理程序

考虑阅读advanced event registration article on Quirksmode了解更多信息。

此外,请考虑使用库如jQuery。这样,声明将变为

$('#myLovelyButtonId').click(
    function doSomething() { 
     alert('my lovely code here'); 
    }); 
-1

修复语法或拼写错误。

澄清含义而不改变它。

纠正小错误。

添加相关资源或链接。

始终尊重原作者。

相关问题