簡體   English   中英

在javascript中抓取asp.net控件

[英]Grabbing asp.net controls in javascript

我有一個頁面,它被代碼所淹沒,如:

var textBox = $get("<%=textState.ClientID%>");

這需要我在頁面內部使用我的JavaScript而不是很好地隱藏在js文件中。 有更好的方法嗎?

document.getElementById不起作用,因為我最終得到這樣的代碼:

var textBox = document.getElementById("originDestinationControl_textState");

要么

var textBox = document.getElementById("ctl00_ContentPlaceHolder_originDestinationControl_textState");

取決於我引用這些控件的位置(在母版頁和/或用戶控件內)

我通常會將這樣的東西粘貼到我想要使用單獨的js文件的頁面中。

<script type="text/javascript">
    var pageNameElements = {
        textbox : '<%= textbox.ClientId %>',
        button : '<%= button.ClientId %>'
    };
</script>

通過這種方式,您可以獲得一個很好的javascript對象,其中包含您可以在js文件中使用的所有控件ID。

$('#' + pageNameElements.textbox)

要么

document.getElementById(pageNameElements.textbox)

如果你不使用jquery。

我可以建議學習jQuery嗎? 自從我開始使用它以來,我從來沒有必須處理凌亂的asp標簽來獲取頁面上的控件。

var textBox = $get("<%=textState.ClientID%>");

看起來像

var textBox = $("input[id$='_textState']");

在jQuery中。 更好的是,你可以將它放入它自己的js文件中!

使用.NET 4.0,您實際上可以完全控制它:

http://www.codeproject.com/KB/aspnet/ASP_NET4_0ClientIDFeature.aspx

它與Visual Studio 2010一起發布了Release Candidate。我知道這不是一個理想的解決方案,但它是一個。

http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx

我覺得你被卡住了。

您的textState.ClientId代碼需要保留在aspx頁面本身。 這是因為它是客戶端。 JavaScript包含文件是從頁面的其余部分單獨下載的,因此它不知道如何處理它。

如果你需要清理它,你可以嘗試使用經典的asp風格包含文件。 然而,在asp.net中,他們最終添加了比他們修復的更多的混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM