以前编写asp网页时,当我们需要在脚本里访问页面内一个对象的时候,一般都是通过对象的id或name。就像这样——
<!--Test.html-->
// ...
function getText()
{
return document.form1.Text1.value; // Text1就是对象的id
}
// ...
<INPUT id="Text1" type="text" ...>
现在随着ASP.NET的发展,让我们越来越习惯使用服务器端控件TextBox作为用户输入的途径。如果我们想在客户端脚本里访问一个TextBox,原先的做法就行不通了——
<!--Test.aspx-->
// ...
function getText()
{
return document.form1.Text1.value; // Text1还是对象的id?
}
// ...
<asp:TextBox id="Text1" .../>
浏览页面时,会有一个脚本错误——“Text1对象不存在”。原因就在于,Text1作为服务器端控件TextBox,在被发送到客户端之前,先由.NET Framework进行转换,而它的id显然也是转换的一部分。
比如:在一aspx文件中,由ID=Content1的服务器端控件Content,在此Content控件中有ID=TextBox_bdj1的服务器端控件TextBox。此aspx网页发送到客户端后,服务器端控件TextBox得ID将转换为"ctl00_ContentPlaceHolder1_T