Javascript 呈现后的母版页控件Id
在我的asp.net项目中,ContentPlaceholder 1上有一个母版页和一个控件。在“我的本地”中呈现为“ctl00\u ContentPlaceholder 1\u控件”后更改此控件的id。但在服务器上,它的变化就像“ContentPlaceholder 1\u control”。当我使用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函数时,它在本地工作,但在服务器上不工作。那么,当应用程序在服
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_”?