在asp.net中保存2个或更多UserControls的值?

时间:2011-04-07 07:48:35

标签: c# asp.net vb.net

我在Fast Survey Project工作!!

我没有时间设计数据库和所有这些东西,我只有一张桌子,我必须填写答案,我必须在两天内完成。

问题是我有超过50个问题,我将它们分成3组,我将每个问题组放在用户控件中,我试图保存每个用户控件的值。

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

所以有什么想法?我当时想要使用像global file !!

这样的东西

但我不知道它是否有效,但我现在正在努力,我希望能从你们这里找到任何想法。

3 个答案:

答案 0 :(得分:0)

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

var survey = new Survey();
Survey.Name = textBoxName.Text;
Session["answer"] = survey.

然后以各种形式使用:

var survey = Session["answer"] as Survey;
if (survey == null)
   //error, redirect to start

Survey类是class,包含所有调查信息。


其他例子,

//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 :(得分:0)

这是一个解决方案

  1. 创建一个接受包含questionID
  2. 的查询字符串的问题页面
  3. 在会话中保存问题回复。
  4. 在问题页面上实现[下一个]和[上一个]按钮,让用户导航到具有不同questionID的网址(第一个问题是没有[上一个]的特殊情况)
  5. 创建结果页
  6. 如果没有[下一个]问题,请将按钮标题更改为[完成]并指向结果页
  7. 对于结果页面。从表中检索正确答案并从会话中检索用户答案。比较并显示结果
  8. 如果要在每个页面上显示最多包含三个问题的的页面,则会变得稍微复杂一些。然后将使用groupID instaed引用问题页面。

    如果您的实施时间只有2天,那么我肯定会满足于每页简单的一个问题解决方案。

答案 2 :(得分:0)

这可以通过UserControl公共属性轻松解决。

以下是我将如何解决这个问题:

  1. 显示问题的每个用户控件都有两个属性 - 问题和答案。
  2. 在页面提交按钮处理程序中,我将包含以下逻辑块
  3. 
    // 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;
    

    这样的事情应该做的工作。

    这里的要点是强调通过子控件中的公开属性获取所需信息(相同的概念可以应用于代码中的任何父/子级别)。