最开始开发的时候,前台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生成调试模式下的一样
在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生成调试模式下的一样
若在前台,因为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()//数据名
是!ClientID才是获取控件的客户端ID的方法。如果你想当然地去写什么客户端ID,一旦ClientID跟你写的不一致了,听谁的?
后台我要用Request.Form得到,前台通过js修改了值了,不能直接获取,不一致,那怎么得到呢
去顶一下http://topic.csdn.net/u/20100107/14/3cdc2e69-48a3-407b-bd5f-b91ecfed4bb5.html这个问题没有人回答,不能正常结帖