所以这是交易:我有一个asp.net控件,位于某些内容页面,但不是其他内容页面。我想在$(document).click事件中引用这个asp.net控件,其代码位于母版页中。下面的代码是我如何做到这一点;它在ContentPlaceHolder“body”中搜索控件“dep_ddb”并检索其客户端ID。
var dep_ddb = document.getElementById('<%= body.findcontrol("dep_ddb").ClientId %>');
var filterButton = document.getElementById('<%=body.findcontrol("filterButton").ClientId %>');
当我加载包含控件的页面时,这很有用。不幸的是,当加载不使用该控件但使用母版页的页面时,我在该VB代码上得到一个对象引用错误:&lt;%= blah blah %&gt;。
我尝试使用javascript if语句检测内容页面是否不包含控件(只需使用标题检查我们是否正在处理我知道不会包含此控件的内容页面):
if (ttl.indexof('| Sign Up') == -1) {
var dep_ddb = document.getElementById('<%= body.findcontrol("dep_ddb").ClientId %>');
var filterButton = document.getElementById('<%=body.findcontrol("filterButton").ClientId %>');
};
。 。 。但它仍然导致对象引用错误。我相信ASP正在尝试编译&lt; %%&gt;中包含的代码。标签首先,并返回一个错误,因为它不存在。这意味着没有基于javascript的“if语句”,我可以在必要时使用它来省略此代码。
所以我的问题是:
当内容页面中存在控件时,可以使用哪种方法从母版页安全引用asp.net控件,并在不存在时省略引用?
答案 0 :(得分:0)
请两个以下链接。可能你会得到一些帮助:
Check if element exists in jQuery
Is there an "exists" function for jQuery?
还有一件事,而不是使用body.findcontrol("dep_ddb").ClientId
尝试通过从页面源获取它来直接提供客户端ID。那么我不会告诉你任何服务器错误。