[英]Using Javascript With ASP.Net controls
使用ASP.Net控件设置客户端“ onclick”事件时是否有最佳实践? 简单地添加onclick属性会导致Visual Studio警告onclick不是该控件的有效属性。 通过codebehind可以在Page_Load事件期间添加它,但是不如我所愿。
这是仅有的两个选择吗? 是否有正确的方法来做我所缺少的?
谢谢! 埃里克·西普尔
**
只是答案的前言:VS中的HTML验证通常是BS。 它抱怨适用于IRL的东西,即使这些东西是不好的做法。 但是有时您必须改变规则以完成工作。
每个ASP.NET页(2.0及更高版本)都带有一个ClientScriptManager 。 您可以使用它从服务器端代码注册javascript。 当页面上的HTML控件全部出现在DOM中时,您可以传入在页面加载后在控件上注册事件的JavaScript。
它在页面上显示了一个统一的位置,可以动态添加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>
您可以通过Javascript将事件添加到所需的HTML元素中。 这是最干净的方法,因为它没有混合使用服务器和客户端技术。 此外,通过这种方式,可以将许多处理程序注册到同一事件(与onclick属性相反)。
基本上,代码是
document.getElementById('myLovelyButtonId').attachEvent('onclick',doSomething)
用于Internet Explorer和
document.getElementById('myLovelyButtonId').addEventListener('click',doSomething,false)
对于其他浏览器。 (doSomething是事件处理程序-JavaScript函数)。 这些调用应在窗口加载事件处理程序中进行
考虑阅读有关Quirksmode的高级事件注册文章以获取更多信息。
另外,考虑使用类似jQuery的库。 这样,语句将变为
$('#myLovelyButtonId').click(
function doSomething () {
alert('my lovely code here');
});
可以设置WebControl.Attributes["onclick"]
值。 如果ASP.NET需要客户端click
处理程序,它将连接以分号分隔的值。
修复语法或拼写错误。
澄清含义而不更改它。
纠正小错误。
添加相关资源或链接。
始终尊重原始作者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.