【问题标题】:Radio button stopped working after conversion from ASP.NET 1.1 to ASP.Net 3.5从 ASP.NET 1.1 转换为 ASP.Net 3.5 后,单选按钮停止工作
【发布时间】:2015-05-31 05:24:19
【问题描述】:

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

问题:

我们采用了一个 ASP.Net 1.1 程序并将其转换为 ASP.Net 3.5。该页面最初显示正确,默认选择一个单选按钮和一个项目列表(“列表 A”)。当我们单击另一个单选按钮时,它会正确显示列表 B。当我们单击最初选择的单选按钮时,第一个列表 List A 不会重新显示。单选按钮是 RadioButtonList 控件的一部分。

我们为调试所做的工作:这是针对驻留在公司 Intranet 上的程序。由于它是 .Net 1.1,该程序主要针对 Internet Explorer - JavaScript 不能在其他浏览器上运行。 F12 开发人员工具在 Internet Explorer 中打开 JavaScript 调试控制台。使用 Visual Studio 附加到 IIS 7.5 进程 (w3wp.exe) 允许我们查看 C# 服务器代码错误。

我们发现: AutoPostBack 在 RadioButtonList 上设置为 true,其中包含作为单选按钮的列表项。因此,ASP.Net + C# 在单选按钮的“onclick”事件中动态生成 doPostBack 函数。但是:没有为默认选择的单选按钮生成 onclick 的 doPostBack 函数。我相信这是 ASP.Net 3.5 框架和 RadioButtonList 控件中的一个错误。

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

【问题讨论】:

  • 您的问题很可能已经结束。将其作为问题提出,删除解决方案部分,然后添加并接受它作为答案。也许你也可以在答案中加入序言。
  • @JonP,感谢您的提醒。我改变了这篇文章和另一篇文章的结构。这也是一个深奥的错误,我认为它可以帮助读者。

标签: javascript c# asp.net


【解决方案1】:

[我将在最初的帖子中发布我们的问题和解决方案作为仅供参考。如果您有 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 事件功能,并且恢复了原始功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2013-07-30
    • 2015-12-10
    • 2011-09-21
    相关资源
    最近更新 更多