Javascript 呈现后的母版页控件Id

Javascript 呈现后的母版页控件Id,javascript,.net,asp.net,vb.net,master-pages,Javascript,.net,Asp.net,Vb.net,Master Pages,在我的asp.net项目中,ContentPlaceholder 1上有一个母版页和一个控件。在“我的本地”中呈现为“ctl00\u ContentPlaceholder 1\u控件”后更改此控件的id。但在服务器上,它的变化就像“ContentPlaceholder 1\u control”。当我使用documents.getelelentbyid('ctl00\u Contentplaceholder1\u control')js函数时,它在本地工作,但在服务器上不工作。那么,当应用程序在服

在我的asp.net项目中,ContentPlaceholder 1上有一个母版页和一个控件。在“我的本地”中呈现为“ctl00\u ContentPlaceholder 1\u控件”后更改此控件的id。但在服务器上,它的变化就像“ContentPlaceholder 1\u control”。当我使用
documents.getelelentbyid('ctl00\u Contentplaceholder1\u control')
js函数时,它在本地工作,但在服务器上不工作。那么,当应用程序在服务器上运行时,为什么要消失“ctl00_u3;”呢

编辑:


为什么服务器端控件id在渲染后不包含“ctl00”?

使用服务器端属性
ClientID
获取适当的id,或者如果您使用的是.NET 4,则使用
clientMode
使用服务器端属性
ClientID
获取适当的id,或者如果您使用的是.NET 4,使用
clientdmode

为什么不使用clientdmode生成静态ID?您使用的是哪个版本的.NET Framework

另一个选项(对于旧版本)是将.NET控件包装在具有静态id的div中,然后像这样使用jQuery:

 var wrapper = $('#wrapperDivId');
 var control = wrapper.find('typeOfControl')[0];
 <div id='wrapper'>
      <asp:TextBox ID='firstName' runat='server' />
 </div>
这样,无论控件的id如何呈现,您都可以始终访问它

例如,文本框呈现为
。现在,您可以将文本框包装在div中,如下所示:

 var wrapper = $('#wrapperDivId');
 var control = wrapper.find('typeOfControl')[0];
 <div id='wrapper'>
      <asp:TextBox ID='firstName' runat='server' />
 </div>

为什么不使用ClientIDMode生成静态ID?您使用的是哪个版本的.NET Framework

另一个选项(对于旧版本)是将.NET控件包装在具有静态id的div中,然后像这样使用jQuery:

 var wrapper = $('#wrapperDivId');
 var control = wrapper.find('typeOfControl')[0];
 <div id='wrapper'>
      <asp:TextBox ID='firstName' runat='server' />
 </div>
这样,无论控件的id如何呈现,您都可以始终访问它

例如,文本框呈现为
。现在,您可以将文本框包装在div中,如下所示:

 var wrapper = $('#wrapperDivId');
 var control = wrapper.find('typeOfControl')[0];
 <div id='wrapper'>
      <asp:TextBox ID='firstName' runat='server' />
 </div>
document.getElementById(“”);
这是一种比硬编码客户端id更安全、更好的方法。

document.getElementById(“”);
这是一种比硬编码客户端id更安全、更好的方法。

您应该像

documents.getElelentbyid('<%=ControlID.ClientID %>') 
documents.getElelentbyid(“”)
您应该像

documents.getElelentbyid('<%=ControlID.ClientID %>') 
documents.getElelentbyid(“”)

我的托管服务器将其asp.net服务器更改为asp.net 4服务器。因此,我的控件呈现时没有“ctl00”。我将.NET3.5项目编译成.NET4和.NET4

现在开始工作了。

我的托管服务器将其asp.net服务器更改为asp.net 4服务器。因此,我的控件呈现时没有“ctl00”。我将.NET3.5项目编译成.NET4和.NET4


现在它可以工作了。

我正在使用.Net framework 3.5。我还没试过,我要试一下。但我必须说,这个控件是iframe,它位于一个usercontrol中,它的打开就像弹出窗口一样。是否可能使用ClientMode?不,ClientMode是.NET 4的新功能。它不在3.5版中。我建议包装控件。:)我正在使用.NETFramework3.5。我还没试过,我要试一下。但我必须说,这个控件是iframe,它位于一个usercontrol中,它的打开就像弹出窗口一样。是否可能使用ClientMode?不,ClientMode是.NET 4的新功能。它不在3.5版中。我建议包装控件。:)控件是位于usercontrol中的iframe。用户控件像弹出窗口一样打开。当我在弹出窗口中选择某个内容时,它会改变页面上的某些内容。当我使用“”时,还有另一个bug。它说你不能更改等等…你必须用控件的服务器端ID替换你的“控件”。为了更进一步,您必须为我们提供更多代码,以便更好地理解该结构。为什么服务器端控件id在呈现后不包含“ctl00”?控件是位于usercontrol中的iframe。用户控件像弹出窗口一样打开。当我在弹出窗口中选择某个内容时,它会改变页面上的某些内容。当我使用“”时,还有另一个bug。它说你不能更改等等…你必须用控件的服务器端ID替换你的“控件”。为了更进一步,您必须为我们提供更多代码,以便更好地理解结构。为什么服务器端控件id在呈现后不包含“ctl00_”?