DNN 5 viewstate

时间:2011-04-29 23:40:27

标签: viewstate dotnetnuke

HI,

我正在研究DotNetNuke 5模块,该模块基本上由三页组成;步骤1,步骤2和步骤3.

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

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

我的问题是:

  • 将我的选择从第1步传递到第2步的最佳方法是什么? ViewState的? URL的参数

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

DNN肯定支持

ViewState。但是,如果您实际为每个步骤设置了不同的页面,则ViewState将无法使用(它仅在回发中保留)。

如果您更喜欢保留三页方案,请使用URL参数,如果最简单的话。如果这不合适,那么您必须将信息存储在cookie,数据库或Session中。

如果要将步骤合并为一个控件并使用回发而不是重定向,则可以使用ViewState。我不认为DNN会公开其向导框架控件,但您可以使用MultiView控件或类似的东西来更多地手动切换不同的步骤。

答案 1 :(得分:0)

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

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

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

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

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

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

以这种方式执行向导与使用DNN之外的.ASCX完全没有什么不同。您可以访问视图状态,会话等。