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?
谢谢!
答案 0 :(得分:1)
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完全没有什么不同。您可以访问视图状态,会话等。