最开始开发的时候,前台JS调用的控件ID在VS调试生成的是服务器ID:ddlEDate
在vs调试模式下:生成的客户端ID是: ctl00_H1_ddlEDate上传服务器后生成的客户端ID是:_ctl0_H1_ddlEDate  前面多一个下划线而且name 属性也发生的变化  在调试模式下生成的name 是  ctl00$H1$ddlEDate
上传服务器后生成的name 是:_ctl0:H1:ddlEDate上传服务器我作了一下配置文件的改动将discuz!NT的一部配置加入到了配置文件中
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation defaultLanguage="c#" debug="true"  />
    <authorization>
      <allow users="*" />
    </authorization>
    <trace  enabled="false" requestLimit="10"  pageOutput="false" traceMode="SortByTime"   localOnly="true"   />
    <customErrors mode="Off"/>
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"   />
    <pages validateRequest="false" enableEventValidation="false" enableViewStateMac="false" viewStateEncryptionMode ="Never"    />
    <httpModules>
      <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
    </httpModules>
    <xhtmlConformance mode="Legacy"/>
    <httpRuntime maxRequestLength="2097151" executionTimeout="3600"/>
    <webServices>
      <protocols>
        <add name="HttpGet" />
        <add name="HttpPost"/>
      </protocols>
    </webServices>
  </system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<!--  注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。-->
<add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" />
</modules>
<defaultDocument>
<files>
<clear />
<add value="index.aspx" />
<add value="forumindex.aspx" />
<add value="spaceindex.aspx" />
<add value="albumindex.aspx" />
</files>
</defaultDocument>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
去掉NT的配置后,控件ID生成调试模式下的一样

解决方案 »

  1.   

    不懂,这东西都是.ClientID去得到的,硬写的不知道
      

  2.   

    一般用户自定义组合控件会遇到该情况,如果从后台引用该空间的ID则为编码时候的ID;
    若在前台,因为ID和name变化,根据位置标记值等来获取。
    例如<usr:select id=selCtr runat=server/>
    html中表现为 <span id=selCtr><input type=text name=:_ctl8selCtr value="数据名"><input type=hidden name=:_ctr9selCtr value="值"><select style="display:none;"><option value=值>数据名</option></select></span>
    在后台取值根据该自定义控件自有方法获取,都是以selCtr.属性或方法来获取
    在前台 $("$selCtr input:eq(1)").val()//值
    $("$selCtr input:eq(0)").val()//数据名
      

  3.   


    是!ClientID才是获取控件的客户端ID的方法。如果你想当然地去写什么客户端ID,一旦ClientID跟你写的不一致了,听谁的?
      

  4.   

    要是操作客户端的控件,而且又不知道服务器端控件在客服端的ID,这个时候可以用其它的方式来找到这种控件,然后处理它们,比如Jquery,就可以很方便的在客户端找到你先要找的控件。
      

  5.   

    我错了我改还不行吗但是name属性呢  
     
    后台我要用Request.Form得到,前台通过js修改了值了,不能直接获取,不一致,那怎么得到呢
      

  6.   

    本贴140分,回答正确的
    去顶一下http://topic.csdn.net/u/20100107/14/3cdc2e69-48a3-407b-bd5f-b91ecfed4bb5.html这个问题没有人回答,不能正常结帖