javascript - 从 ASP.NET 1.1 转换为 ASP.Net 3.5 后,单选按钮停止工作

标签 javascript c# asp.net

[我在下面发布我们的问题和解决方案仅供引用。如果您有微软或代表组织关于此问题的官方声明,我会将其标记为答案。否则,我下面的帖子将作为答案]。

问题:

我们采用了 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,其中包含作为单选按钮的列表项。结果,ASP.Net + C# 在单选按钮的“onclick”事件中动态生成 doPostBack 函数。但是:没有为默认选定的单选按钮生成 onclick 的 doPostBack 函数。我相信这是 ASP.Net 3.5 框架和 RadioButtonList 控件中的一个错误。

编辑:从问题中删除解决方案并将其作为答案发布以避免问题结束。感谢@Jon P 的提醒。

最佳答案

[我在这篇最初的文章中发布了我们的问题和解决方案,仅供引用。如果您有微软或代表组织关于此问题的官方声明,我会将其标记为答案。否则,这篇文章将作为答案]。

解决方案:

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 事件功能,并且恢复了原始功能。

关于javascript - 从 ASP.NET 1.1 转换为 ASP.Net 3.5 后,单选按钮停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291265/

相关文章:

php - 清除指向 PHP 生成的 JavaScript 和 CSS 的链接

C# Windows 应用程序开发人员 - 第 3 方工具

c# - Asp.Net MVC 6 - 已配置关系存储,但未指定要使用的 DbConnection 或连接字符串

c# - 在 Repeater 中获取动态控件和文本

javascript - 无法让 document.getElementByID 工作

javascript - 使用 Vue 中的 useVirtualList 来渲染 HeadlessUI 的 Listbox 组件

javascript - 创建一个调用 Promise 或快速完成操作的方法

c# - 如何验证电子邮件来自ASP.NET MVC中的特定域?

javascript - 是什么导致我的标签的事件处理程序触发两次?

c# - 为什么对象和集合初始值设定项的组合使用 Add 方法?