Javascript 伪造的(但会造成残废)“;[WebElementId]未声明";VB.NET中的错误

Javascript 伪造的(但会造成残废)“;[WebElementId]未声明";VB.NET中的错误,javascript,jquery,vb.net,telerik,radgrid,Javascript,Jquery,Vb.net,Telerik,Radgrid,因此,当我试图通过“文件”菜单构建网站时,出现了标题中提到的错误。导致这种情况的代码如下(出现在body标记中的JavaScript): if(editedRow!=null) { 变量SundayLoc=$find(“”); var MondayLoc=$find(“”); var TuesdayLoc=$find(“”); var WednesdayLoc=$find(“”); 变量ThursdayLoc=$find(“”); var FridayLoc=$find(“”); var Sat

因此,当我试图通过“文件”菜单构建网站时,出现了标题中提到的错误。导致这种情况的代码如下(出现在body标记中的JavaScript):

if(editedRow!=null)
{
变量SundayLoc=$find(“”);
var MondayLoc=$find(“”);
var TuesdayLoc=$find(“”);
var WednesdayLoc=$find(“”);
变量ThursdayLoc=$find(“”);
var FridayLoc=$find(“”);
var SaturdayLoc=$find(“”);
if(currentCombo==“OFF”| | currentCombo==“OFFICE”)
{                
如果(rcbID==“现场作业计划程序”\u ctl00\u ctl05\u RCB\u SunActivity”)
{
SundayLoc.disable();
}
否则如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u MonActivity”)
{
MondayLoc.disable();
}
否则,如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u TuesActivity”)
{
TuesdayLoc.disable();
}
否则,如果(rcbID==“现场操作调度程序\u ctl00\u ctl05\u RCB\u活动”)
{
WednesdayLoc.disable();
}
否则,如果(rcbID==“现场操作调度程序\u ctl00\u ctl05\u RCB\u ThursActivity”)
{
星期四禁用();
}
否则,如果(rcbID==“现场作业计划程序\u ctl00\u ctl05\u RCB\u活动”)
{
FridayLoc.disable();
}
否则,如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u SatActivity”)
{
SaturdayLoc.disable();
}
sender.hideDropDown();
}
否则如果(currentCombo!=“关闭”和¤tCombo!=“办公室”)
{
如果(rcbID==“现场作业计划程序”\u ctl00\u ctl05\u RCB\u SunActivity”)
{
SundayLoc.enable();
}
否则如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u MonActivity”)
{
MondayLoc.enable();
}
否则,如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u TuesActivity”)
{
TuesdayLoc.enable();
}
否则,如果(rcbID==“现场操作调度程序\u ctl00\u ctl05\u RCB\u活动”)
{
WednesdayLoc.enable();
}
否则,如果(rcbID==“现场操作调度程序\u ctl00\u ctl05\u RCB\u ThursActivity”)
{
星期四启用();
}
否则,如果(rcbID==“现场作业计划程序\u ctl00\u ctl05\u RCB\u活动”)
{
FridayLoc.enable();
}
否则,如果(rcbID==“FieldOpsScheduler\u ctl00\u ctl05\u RCB\u SatActivity”)
{
SaturdayLoc.enable();
}
sender.hideDropDown();
} 
}
现在真正奇怪的是(可能是发生这种情况的根本原因)当我删除上述代码时,指出这些web表单元素ID名称的错误正好有一半消失了。然而,只有一半——不是全部,这是没有意义的,因为我去掉了要求web表单元素ID的JavaScript代码的所有部分

删除所有相关JavaScript并双击VS2005中剩余的七条错误消息后,它们都会将我带到页面的第一行代码,即:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="DistrictSchedule.aspx.vb" Inherits="FieldOperations_DistrictSchedule" %>

我自己和我的同事都不知道到底发生了什么。当我去掉一半的错误时,至少页面会执行。然而,从代码来看,这一切都应该是可行的

其他错误信息: 我应该提到的是,我试图查找的那些web表单元素ID只有在RadGrid处于编辑模式时才存在,所以它们本来就不存在是有意义的。无论如何,这不应该导致站点瘫痪错误,尽管出于任何原因。最后,抛出错误的特定行是使用$find的行,以及使用$find获取抛出错误值的变量的行


不管谁能告诉我发生了什么,都会帮上大忙。我提前向您表示感谢。

因此,当我随机浏览其他页面,查找有关
find()
和Telerik的信息时,我想到了解决这个问题的好办法。我注意到,在某些情况下,您会遇到以下情况:

var whatever = $find("<%= SomeControlIDDeclaredServerSide.ClientID %>");
var whatever = $find("SomeControlIDAsDisplayedOnWebpage");
事实证明,这两行非常相似的代码是不可互换的,尽管乍一看人们可能会认为它们是可互换的。具体来说,在我的例子中,消除所有这些令人讨厌的错误的方法是使用第二行,不带括号和百分号

关于为什么第二行在我的情况下有效而不是第一行,我的理论是,当选择编译/构建网站时,如果使用像第一行这样的代码,编译器希望在运行时立即通过.aspx页面上的标记语法创建对象。在我的例子中,“FieldOpsScheduler_blahblahblah”是在我的RadGrid进入编辑模式时动态创建的(因此,不是在运行时立即创建)


无论如何,希望我的经验能帮助那些遇到这个问题或类似问题的人。

很高兴你找到了自己的解决方案。为了进一步澄清,下面是正在发生的事情

<%= %>
您告诉您的ASPX页面获取服务器端控件的ClientID,然后在处理该页面时将该ID输出到JavaScript,resu
<%= %>
var whatever = $find("<%= SomeControlIDDeclaredServerSide.ClientID %>");
var whatever = $find("ctl00_ctl05_SomeControlIDDeclaredServerSide");
var whatever = $find("SomeControlIDAsDisplayedOnWebpage");