当使用ASP.Net控件设置客户端“onclick”事件时,是否有最佳做法?只需添加onclick属性就会导致Visual Studio警告:onclick不是该控件的有效属性。在Page_Load事件中通过代码隐藏工作添加它,但比我想要的更清晰。使用Javascript与ASP.Net控件
这是唯一的两个选择吗?有没有正确的方法来做到这一点,我失踪了?
谢谢! Eric Sipple
当使用ASP.Net控件设置客户端“onclick”事件时,是否有最佳做法?只需添加onclick属性就会导致Visual Studio警告:onclick不是该控件的有效属性。在Page_Load事件中通过代码隐藏工作添加它,但比我想要的更清晰。使用Javascript与ASP.Net控件
这是唯一的两个选择吗?有没有正确的方法来做到这一点,我失踪了?
谢谢! Eric Sipple
**
只是一个关于答案的提示: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>
设置WebControl.Attributes["onclick"]
的值是可以的。如果ASP.NET需要客户端click
处理程序,它将连接由分号分隔的值。
您可以通过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');
});
修复语法或拼写错误。
澄清含义而不改变它。
纠正小错误。
添加相关资源或链接。
始终尊重原作者。