在asp.net中保存来自2个或更多usercontrol的值

本文关键字:usercontrol 的值 2个 net asp 保存 | 更新日期: 2023-09-27 17:49:34

我在快速调查项目工作!!

我没有时间设计一个数据库和所有这些事情,我只有一个表,我必须填写答案,我必须在两天内完成。

问题是我有50多个问题,我把它们分为3组,我把每个问题组在用户控制,我试图保存每个用户控制的值。

我想在每个用户控件后暂时保存主题,当用户到达最后一个用户控件并单击完成按钮时,它应该一次保存所有答案。

有什么想法吗??我想使用全局文件之类的东西!!

但我不知道它是否有效,但我现在正在研究它,我希望从你们那里找到任何想法

在asp.net中保存来自2个或更多usercontrol的值

您可以在会话中临时保存:

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));
}

这里有一个解决方案

  1. 创建一个接受包含questionID
  2. 的查询字符串的问题页面
  3. 保存会话中的问题回答。
  4. 在问题页面上实现[next]和[previous]按钮,让用户导航到具有不同questionID的url(第一个问题是没有[previous]的特殊情况)
  5. 创建结果页
  6. 当没有[下一个]问题可用时,将按钮标题更改为[finish]并指向结果页
  7. 显示结果页。从表中检索正确答案,并从会话中检索用户答案。比较和显示结果

如果您想在一个页面上显示一个,每个页面上最多有三个问题,那么它会变得稍微复杂一些。然后,问题页将与已安装的groupID一起被引用。

如果你只有2天的时间来实现,那么我当然会满足于简单的每页一个问题的解决方案。

这很容易通过UserControl公共属性解决。

我将如何解决这个问题:

  1. 每个显示问题的用户控件将有两个属性-问题和答案。
  2. 在页面提交按钮处理程序中,我将包括以下逻辑块

// 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;
像那样的东西应该能起作用。这里的重点是强调通过子控件的公开属性获得所需的信息(同样的概念可以应用于代码中的任何父/子级别)。