在asp.net中保存来自2个或更多usercontrol的值
本文关键字:usercontrol 的值 2个 net asp 保存 | 更新日期: 2023-09-27 17:49:34
我在快速调查项目工作!!
我没有时间设计一个数据库和所有这些事情,我只有一个表,我必须填写答案,我必须在两天内完成。
问题是我有50多个问题,我把它们分为3组,我把每个问题组在用户控制,我试图保存每个用户控制的值。
我想在每个用户控件后暂时保存主题,当用户到达最后一个用户控件并单击完成按钮时,它应该一次保存所有答案。
有什么想法吗??我想使用全局文件之类的东西!!
但我不知道它是否有效,但我现在正在研究它,我希望从你们那里找到任何想法
您可以在会话中临时保存:
var survey = new Survey();
Survey.Name = textBoxName.Text;
Session["answerswer"] = survey.
然后在所有形式中都可以使用:
var survey = Session["answerswer"] as Survey;
if (survey == null)
//error, redirect to start
其中Survey class为class,包含所有的Survey信息。
其他例子,
//Form1, question 1
List<string> survey = new List<string>();
survey.Add(textBox1.Text);
Session["survey"] = survey;
//Form2, question2
var survey = Session["survey"] as List<string>;
survey.Add(textBox1.Text);
//Form...n... final save
var survey = Session["survey"] as List<string>;
for(int i=0; i< survey.Count;i++)
{
SaveAnswer("someId", i, survey(i));
}
这里有一个解决方案
- 创建一个接受包含questionID 的查询字符串的问题页面
- 保存会话中的问题回答。
- 在问题页面上实现[next]和[previous]按钮,让用户导航到具有不同questionID的url(第一个问题是没有[previous]的特殊情况)
- 创建结果页
- 当没有[下一个]问题可用时,将按钮标题更改为[finish]并指向结果页
- 显示结果页。从表中检索正确答案,并从会话中检索用户答案。比较和显示结果
如果您想在一个页面上显示一个组,每个页面上最多有三个问题,那么它会变得稍微复杂一些。然后,问题页将与已安装的groupID一起被引用。
如果你只有2天的时间来实现,那么我当然会满足于简单的每页一个问题的解决方案。
这很容易通过UserControl公共属性解决。
我将如何解决这个问题:
- 每个显示问题的用户控件将有两个属性-问题和答案。 在页面提交按钮处理程序中,我将包括以下逻辑块
// this dictionary will eventually be serialized and kept in session
// throughout the whole Q&A session
var questionsAndAnswers = new Dictionary();
foreach(var control in MyUserControls)
{
questionsAndAnswers.Add(control.Question, control.Answer);
}
this.Session["q&a"] = questionsAndAnswers;
像那样的东西应该能起作用。这里的重点是强调通过子控件的公开属性获得所需的信息(同样的概念可以应用于代码中的任何父/子级别)。