【问题标题】:ASP.Net Wizard - How to clear contents of web controlsASP.Net 向导 - 如何清除 Web 控件的内容
【发布时间】:2009-05-07 07:14:24
【问题描述】:

我有一个 ASP.NET 向导控件,我在其中循环返回 wiz.MoveTo(wiz.WizardSteps[0]),到 FinishButtonClick 事件处理程序中向导的第一步。

然后我还想清除步骤中所有控件的所有内容?

问题是由于视图状态,向导步骤中的控件会记住它们的 之前提交的值?

我不能在控件上使用 enableviewstate=false,因为它们需要能够记住它们在步骤之间的状态(来回)?

只有在 FinishButtonClick 事件发生时才清除所有控件的视图状态的最简单方法是什么?

谢谢!

【问题讨论】:

  • 抱歉,ViewState 不负责为继承自 IPostBackDataHandler 接口的控件(如 TextBox、下拉菜单、CheckBox)存储修改后的值。 LoadPostBackData 事件触发,其中这些控件的值从 HTTP POST 标头加载...

标签: asp.net


【解决方案1】:

有什么不应该清除的吗?如果没有,最简单的解决方案可能是在 click 事件处理程序中放入重定向,以便重新初始化所有内容。

【讨论】:

  • 谢谢汤姆,我碰巧偶然发现了完全相同的解决方案......在更好地理解了这个问题之后。 ;)
【解决方案2】:

解决了。在这个过程中还学到了一些关于 ViewState 范围的新知识……

ViewState 不负责存储 TextBoxes、DropDowns、CheckBoxes 等控件的修改值。这些控件继承自 IPostBackDataHandler 接口。 LoadPostBackData 事件在页面生命周期中触发,其中控件的 VALUES 从表单 HTTP POST 标头加载...由客户端重新提交...

那么如何销毁HTTP POST Headers来清除控制值呢?

新的请求会产生新的 HTTP POST 标头...所以我只需在 FinishButtonClick 事件处理程序中执行此操作:

HttpContext.Current.Response.Redirect(Page.Request.Url.ToString());

这有一个额外的好处,它可以进入向导的第 1 步,所以我也不必这样做...wiz.MoveTo(wiz.WizardSteps[0])

希望这可以帮助遇到同样问题的人。

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2010-12-19
    • 2019-11-13
    相关资源
    最近更新 更多