【发布时间】:2009-12-23 15:04:42
【问题描述】:
我有一个自定义控件,其中包含 RadioButtonList 控件。在选择其中一个单选按钮时,控件会进行回发以执行一些服务器端工作,并且页面会重新加载并选择正确的单选按钮。这在我的测试页面中运行良好。
我现在将控件移动到网站上的页面上,它将在选中radiobutton时,出现回前,但是当页面重新加载时,不再选择了RadioButton。所以看起来选择不再被保存到视图状态中。
任何关于我应该查看新页面的哪些方面的建议都将非常感激。
干杯
附录 - 更多信息
感谢斯蒂芬的建议
该控件最初是作为 Web 用户控件开发的,使用设计器、非常简单的实现、用于 onload 和单选按钮选择更改时的服务器端处理程序。单独的 dll 用于后面的代码和一个 ascx。然后,我将其转换为自定义控件,以将 ascx 拉入 dll 中,并在后面加上已编译的代码。
我没有在测试页面中动态创建控件,在 aspx 的顶部有一个标签和一个 来执行此操作。单选按钮列表是使用设计器在 ascx 中拖放的,所以我没有实现创建它的代码。所以都很香草。 我真的在寻找我应该在使用该控件的页面中查看的差异,以弄清楚为什么它在测试页面中有效,但在它需要驻留的站点页面中无效。
*********** 加法 *********** 我有很短的时间来解决这个问题,不得不把它交给另一个开发人员。当我从他那里找到解决方案时,我会在这里发布。 非常感谢大家的意见。
*********** 回答 ************* 这是接管的开发人员的答案。
您的测验控件非常好,回发时未保留值的原因是因为在您将其启用时继承了基类中的功能。本质上,它在页面加载方法中执行了 DataBind,该方法在页面生命周期中是在调用回发方法之前,因此它重置了下拉列表的值。最后,我设置了一些保存下拉列表值的视图状态属性。所以这不是你可能知道的。
【问题讨论】:
-
不,这是一个普通的 asp.net 页面。
-
@SLaks,如果页面使用Ajax,我应该寻找什么?我知道我说过没有,但我很好奇,因为我迟早必须再次处理 ajax。