0

所以这里是交易:我有一个位于某些内容页面而不是其他内容页面上的 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 代码上收到一个对象引用错误:<%= blah blah %>。

我尝试使用 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 正在尝试首先编译包含在 <% %> 标记中的代码,并且由于它不存在而返回错误。这意味着没有基于javascript的“if语句”可以在必要时省略此代码。


所以我的问题是:

当控件存在于内容页中时,可以使用什么方法从母版页安全地引用一个 asp.net 控件,而当它不存在时省略该引用?


4

1 回答 1

0

请以下两个链接。可能你会得到一些帮助:

检查jQuery中是否存在元素

jQuery 是否有“存在”功能?

还有一件事,而不是body.findcontrol("dep_ddb").ClientId 尝试通过从页面源获取它来提供直接客户端 ID。那么我不会向您显示任何服务器错误。

于 2013-04-06T03:36:32.790 回答