繁体   English   中英

将Javascript与ASP.Net控件一起使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM