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