[英]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。我知道这不是一个理想的解决方案,但它是一个。
我觉得你被卡住了。
您的textState.ClientId代码需要保留在aspx页面本身。 这是因为它是客户端。 JavaScript包含文件是从页面的其余部分单独下载的,因此它不知道如何处理它。
如果你需要清理它,你可以尝试使用经典的asp风格包含文件。 然而,在asp.net中,他们最终添加了比他们修复的更多的混乱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.