【发布时间】:2011-02-12 17:11:38
【问题描述】:
我在框架 3.5 上维护一个 ASP.NET Web 窗体应用程序。本质上,它是一个项目列表和一个表示项目状态的复选框。用户可以按任意数量的列对项目进行排序。在回发之间添加和删除新项目。此列表托管在中继器中,项目模板是用户控件。该页面没有母版页,因为它是从框架 1.0 升级到 1.1 到 2.0 到 3.5 的应用程序。如果应用程序由 IIS6.1 和 7.5、32 位和 64 位托管,则应用程序会执行此操作。它在自己的应用程序池中,并且该池有 4 个线程。
现在的问题:如果选中第三行中的复选框并且在数据库中删除位置 1 中的项目,那么它应该向上移动到位置 2。它确实向上移动,但选中的复选框保持在位置3. 如果行已排序,则所有选中的复选框都保留在其位置,但其余信息已正确排序和显示,包括父标签上的标题。
Viewstate 在用户控件和用户控件内的复选框上被禁用。在页面指令中禁用页面缓存。转发器绑定在页面加载中。 我已经检查了转发器中控件的状态,应该在 repeater.DataBind 之后立即检查,并且复选框的状态是正确的。这是页面加载事件的最后一行。使用提琴手我已经验证呈现的 HTML 不正确。所以看起来问题出在渲染的某个地方。
这是我所能接受的。该应用程序是关键任务,但此错误已存在很长时间。显然,此复选框的状态并不那么重要,但由于不断变化的业务需求,它已成为一个问题。
没有任何搜索出现任何错误。我可以发布代码,但由于它是大型应用程序的一部分,所以它非常长,所以我没有。
似乎正在 Page_Load 和 LoadComplete 之间加载视图状态。在数据绑定和 LoadComplete 之后检查值显示了这一点。什么会导致视图状态在这样的错误时间加载。感觉是个bug。它只影响应用程序中的一页。我知道视图状态是在初始化之后填充的,并且所有控件都应该在 OnInit 期间加载,但我不想要视图状态,所以这不起作用是可以的。
它与控件的类型无关。我刚刚将 asp:checkbox 换成了 htmlinputcheckbox 并且行为仍然存在。
编辑:控制状态是否与此有关?据我所知,它不能被禁用。
【问题讨论】:
标签: asp.net-3.5 viewstate repeater