我应该在通过AJAX执行动作方法时使用线程吗?

时间:2011-08-20 11:34:03

标签: asp.net-mvc-3

我正在建立一个问号。当用户点击多项选择题的答案可能性时(这是一个单选按钮),我调用一种动作方法来保存这个答案。

代码:

<script language="javascript">

$(document).ready(function () {

    $('.MCQRadio').click(function () {

        var question_id = $(this).attr('question-id');
        var mcq_id = $(this).attr('mcq-id');

        $.ajax({
            url: '/SaveSurveyAnswers/SaveMCQAnswer',
            data: { "mcq_id": mcq_id, "question_id": question_id },
            success: function (data) {
            }
        });
    });
});

保存答案的代码:

public EmptyResult SaveMCQAnswer(int mcq_id, int question_id)
    {
        MCQ_Answers mcqa = null;
        try
        {
            mcqa = db.MCQ_Answers.Single(x => x.question_ID == question_id);
        }
        catch (InvalidOperationException e)
        {

        }
        if (mcqa != null)
        {
            mcqa.mcq_id = mcq_id;
        }
        else
        {
            MCQ_Answers mcq_answer = new MCQ_Answers()
            {
                question_ID = question_id,
                respondent_id = 1
            };

            db.MCQ_Answers.AddObject(mcq_answer);
        }
        db.SaveChanges();
        return new EmptyResult();
    }

如果一个问题有5个答案可能性,我随机和快速点击它们,然后回到上一页,即,当我返回正确答案时,不会保存。我应该使用线程来确保保存正确的答案吗?怎么样?

谢谢

1 个答案:

答案 0 :(得分:0)

而不是一直保存你的答案,你可以创建一个JSOn对象并将答案保存在json中。然后,您可以在最后一次发布所有已完成的答案。

看看这个:http://msdn.microsoft.com/en-us/scriptjunkie/ff962533

基本上这将允许你存储会话数据 - 远程机器上的json,你只需要一个添加,删除功能,然后就可以了....

我在一个需要使用画布上的对象位置更新服务器的应用程序中大量使用它,但是使用sessvars我只保留其中的所有X和Y位置并最后推送JSON当我完成。

如果更改页面,则可以在没有服务器调用的情况下从JSON对象获取值。

作为一个注释你也可以用标签或隐藏的表格部分来改善,并且减少重新填充说第1页,第2页等的需要,因为它们已经存在,只是隐藏!