从ASP.NET 1.1转换为ASP.Net 3.5后,单选按钮停止工作
[我在下面发布我们的问题和解决方案作为FYI。 如果您有关于此问题的Microsoft或代理组织的正式声明,我会将其标记为答案。 否则,我的post将作为答案]。
问题:
我们采用了ASP.Net 1.1程序并将其转换为ASP.Net 3.5。 页面最初正确显示,默认情况下选择一个单选按钮和项目列表(“列表A”)。 当我们点击另一个单选按钮时,它会正确显示列表B. 当我们单击最初选择的单选按钮时,第一个列表A列表将不会重新显示。 单选按钮是RadioButtonList控件的一部分。
我们做了什么调试:这是一个驻留在公司内部网上的程序。 由于它是.Net 1.1,该程序主要针对Internet Explorer – JavaScript不能在其他浏览器上运行。 F12开发人员工具在Internet Explorer中调出JavaScript调试控制台。 使用Visual Studio附加到IIS 7.5进程(w3wp.exe)允许我们查看C#服务器代码错误。
我们发现:在RadioButtonList上将AutoPostBack设置为true,其中包含List项目,这些项目是单选按钮。 因此,ASP.Net + C#在单选按钮的“onclick”事件中动态生成doPostBack函数。 但是:没有为默认选择的单选按钮生成onclick的doPostBack函数。 我相信这是ASP.Net 3.5框架和RadioButtonList控件中的一个错误。
编辑:从问题中删除解决方案并作为答案发布以避免问题结束。 谢谢@Jon P的单挑。
[我将这个问题和解决方案作为一个FYI发布在这个初始post中。 如果您有关于此问题的Microsoft或代理组织的正式声明,我会将其标记为答案。 否则,这篇文章将作为答案]。
解:
1)我们将RadioButtonList控件的AutoPostBack设置为false。
2)在页面的PreRender事件中,我们通过循环遍历RadioButtonList中的列表项,手动将新的doPostBack函数添加到单选按钮列表中的每个List项。
3)代码如下:
for (int i = 0; i < rbList.Items.Count; i++) { rbList.Items[i].Attributes.Add("onclick", "javascript:setTimeout('__doPostBack(\'rbList$" + i + "\',\'\')', 0)"); }
4)onclick事件函数调用中的代码与ASP.Net 3.5 + C#自动生成的结构相匹配。
完成此修复后,两个单选按钮都具有onclick事件function,并恢复了原始function。
上述就是C#学习教程:从ASP.NET 1.1转换为ASP.Net 3.5后,单选按钮停止工作分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954875.html