大家好,我刚从ASP转到 .Net来,可能问的问题比较弱智一点
以前用ASP使用了很多include文件,比如header,footer等等
在.Net 2.0里面,我看到有母版页的方式和这个很像现在遇到一个问题,我在母版页里定义的form为
<form id="form1" runat="server">...</form>里面有很多控件,随便举个例子比如
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>但是页面打开以后,就变成了
<form name="aspnetForm" method="post" action="welcome.aspx" id="aspnetForm">...</form>

<input name="ctl00$MainContent$txtEmail" type="text" id="ctl00_MainContent_txtEmail" />我的页面里有很多Javascript脚本使用这些控件
包括布局,验证,联动等等
现在名字自动全变了,我该怎么办?

解决方案 »

  1.   

    oh,忘了说了
    那个text控件是放在内容页welcome.aspx的,form是在母版页MasterPage.master
      

  2.   

    呵呵,是这样的,其实也有一定规律的.
     ctl00$MainContent$txtEmail
      
      
      MainContent--母版页名
      txtEmail-----TextBox名
      

  3.   

    你就把这些名字记下来呗比如ctl00_MainContent_txtEmail,一般你控件ID和母版页不变的话,这些ID都不变的
      

  4.   

    说错.
      MainContent--<asp:Content />名
      

  5.   

    新ID是动态生成的吧
    在不同的机器上,或者不同的环境里,会不会发生变化?
    如果那样的话,我的Javascript改起来就太郁闷了
      

  6.   

    大家一般是怎么处理这个问题的
    难道就是用aspnetForm.ctl00_MainContent_txtEmail的方式来搞定?
    .Net为什么无端端搞这么一个东西,用起来岂不是更不方便要是不变的话倒也罢了,就怕微软将来升级个2.1或者3.0什么的,把命名规则改了
    那原来发布的程序岂不是都要出错?
      

  7.   

    用控件的ClientID属性
    在JavaScript中这样使用:
    var email = document.getElementById('<%= txtEmail.ClientID %>');
      

  8.   

    你设置好页面的ID。以后不改的话。生成出来的ID是固定了。
      

  9.   

    刚试了一下, babyrockxray(Game~Over) 的方法好用
    多谢顺路搭一个问题
    我看别人在welcome.aspx页面里手动写一个
    <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>切换到welcome.aspx.cs页面的时候,会自动生成一个定义
    protected System.Web.UI.WebControls.TextBox txtEmail我这里为什么不行啊,是不是需要在哪里设置一下?
      

  10.   

    用Control.UniqueID来获取它生成的name属性,用Control.ClientID来获取它生成的id属性。例如有一个TextBox1,那么TextBox1.ClientID就是生成的<input />的id属性了。
      

  11.   

    刚试了一下, babyrockxray(Game~Over) 的方法好用
    多谢顺路搭一个问题
    我看别人在welcome.aspx页面里手动写一个
    <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>切换到welcome.aspx.cs页面的时候,会自动生成一个定义
    protected System.Web.UI.WebControls.TextBox txtEmail我这里为什么不行啊,是不是需要在哪里设置一下?
    ----------------
    VS 2003 才这样
    VS 2005 没有了。
      

  12.   

    2005没有了,如果你要在子模版里面访问master的控件你要这样子if(Page.Master!=null)
    {
     Page.Master.FindControl("控件名")
    }