【问题标题】:ASP.NET Wizard control downsideASP.NET 向导控件的缺点
【发布时间】:2011-06-15 07:24:37
【问题描述】:

我正在评估 ASP.NET 向导控件。我们需要从不同步骤收集数据,验证数据,最后我应该能够显示数据摘要。

我想从小组中了解是否有人使用过此控件以及他们遇到了什么问题。此控件是否有任何使用限制?

【问题讨论】:

    标签: asp.net wizard


    【解决方案1】:

    我个人不喜欢向导控件。它非常僵硬,我发现它不是很好用。从那时起,我在向导的每个步骤中都使用了内部的 MultiView 控件和带有用户控件的 UpdatePanel。这样它就可以完全灵活了。

    使用 MultiView 方法,您还可以在设计器中轻松查看向导的所有步骤。

    不过,这只是我在控件上的选择,第一次访问时我没有给它太多机会。

    【讨论】:

      【解决方案2】:

      如果您使用得当,Wizard 控件可以为您节省大量的管道时间 - 但是,学会如何使用它可能比您节省的管道时间花费更多。如果您打算重复使用它,那么最初投资于了解其特性可能是值得的。

      我已经构建了一个向导,其中侧栏中显示的步骤取决于您所处的步骤(以及您在该点所做的工作)。因此,当您按下 Next 或 Previous 时,您所执行的步骤也是动态确定的。

      为了实现这一点,我阅读了很多关于动态禁用步骤、隐藏步骤以及添加和删除步骤的内容。后者将我带入了 ViewState 的深水区。对于它的价值,这是我的基本方法:

      您可以通过将步骤 ID(和标题,如果已设置)设置为空字符串来控制边栏中可见的步骤,例如我在 arrWizardSteps() 中有步骤名称,并且我的步骤定义为整数常量,然后使用

        For i = intCREDENTIALS To intADDITIONAL_INFORMATION
          Wizard1.WizardSteps(i).ID = IIf(Wizard1.ActiveStepIndex < i, "", arrWizardSteps(i))
        Next
      

      如果步骤相对独立,您可以通过调用相同的例程来处理 SideBarButtonClick、PreviousButtonClick 和 NextButtonClick 事件,您构造该例程来处理离开当前步骤并进入下一个步骤,而不管您单击哪个按钮进行过渡。例如,例程可能会存储当前步骤的控件捕获的数据,并将一些数据加载到下一步的控件中。

      如果您确实处理了这些事件,您可能需要自己处理更改 ActiveStepIndex。如果您不更改它,向导将增加/减少 ActiveStepIndex(取决于按下哪个按钮)(除非您在处理程序中设置 e.Cancel=true,其中 e 是处理程序的 WizardNavigationEventArgs 参数)。

      如果您的隐藏步骤代码需要知道目标步骤,那么您需要将该代码放入 PreRender,因为此时向导将移至下一步,您将知道它是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-23
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多