当asp.net控件不存在于内容页中时,母版javascript会导致对象引用错误

Masterpage javascript causes an object reference error when asp.net control doesn't exist in the content page

本文关键字:javascript 母版 错误 对象引用 控件 net asp 不存在 于内容      更新时间:2023-09-26

所以这里的交易:我有一个asp.net控件位于一些内容页,但不是其他。我想在$(文档)中引用这个asp.net控件。单击event,此操作的代码位于母版页中。下面的代码是我如何做到这一点的;它在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控件,并且当控件不存在时省略该引用?


请点击以下链接。也许你会得到一些帮助:

检查jQuery中是否存在元素

是否有"存在"?jQuery的函数?

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