【问题标题】:DNN 5 viewstateDNN 5 视图状态
【发布时间】:2011-04-29 23:40:26
【问题描述】:

嗨,

我正在开发基本上由三页组成的 DotNetNuke 5 模块;第 1 步、第 2 步和第 3 步。

在第 1 步中,我展示了一个带有 CheckBox 列和按钮的 GridView,应该将用户导航到第 2 步。

在第 2 步中,我还展示了一个 GridView,它显示了在第 1 步中选择的项目。

我的问题是:

  • 将我的选择从第 1 步传递到第 2 步的最佳方法是什么? 视图状态?网址参数?

    我在第 1 步中尝试过:ViewState["SelectedItems"] = string.Join(",", list.ToArray()); 在第 2 步:我做了:

     var items = (string)ViewState["SelectedItems"];
    

我发现 items 包含空字符串。 DNN5 是否支持 ViewState?

  • 内置的 ASP.Net 向导控件没有提供足够的灵活性来自定义它的外观,因此它没有被使用。 DotNetNuke 是否可能为 ASP.NET WizardControl 提供替代方案?

谢谢!

【问题讨论】:

    标签: viewstate dotnetnuke


    【解决方案1】:

    DNN 绝对支持ViewState。但是,如果您实际上为每个步骤设置了不同的页面,ViewState 将不可用(它只会在回发中持续存在)。

    如果您希望保留三页方案,使用 URL 参数可能是最简单的方法。如果这不合适,那么您必须将信息存储在 cookie、数据库或 Session 中。

    如果您想将您的步骤合并到一个控件中并使用回发而不是重定向,那么您可以使用ViewState。我不认为 DNN 公开了它的向导框架控件,但是您可以使用 MultiView 控件或类似的东西来更手动地在不同步骤之间切换。

    【讨论】:

    【解决方案2】:

    在我看来,您需要 1 个单独的 .ASCX 用于您的 DNN 模块,但您需要在内部使用三个面板,每个步骤一个。我将调用面板 Panel_Step1、Panel_Step2 和 Panel_Step3。最初将隐藏第 2 步和第 3 步。

    每个面板将包含向导中相应步骤的所有控件和图形。

    因此,当用户单击“下一步”按钮从第 1 步继续到第 2 步时,您的代码将隐藏 Panel_Step1 并显示 Panel_Step2。您将需要 Panel_Step2 的初始化函数。我们称之为 InitStep2()。

    在这个 InitStep2() 函数中,您将能够通过分析控制值方向来分析用户在步骤 1 中所做的值和选择。

    示例:Textbox_Step1_Name.text、DropDown_Step1_State.SelectedValue 等。

    这些值确实存储在视图状态中。

    以这种方式执行向导实际上与在 DNN 之外使用 .ASCX 执行此操作没有什么不同。您可以访问视图状态、会话等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多