我正在构建一个问题。当用户点击多项选择题的答案时(这是一个单选按钮),我调用一个操作方法来保存这个答案。我应该在通过AJAX执行操作方法时使用线程吗?
代码:
<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点答案的可能性,我在上面点击随机,快速,然后回到上一页,即,当我返回正确的答案不会被保存。我应该使用线程来确保正确的答案被保存吗?如何?
感谢
你确定你实际上在上一页做了一个*加载*(你可以使用调试器进行检查)。许多浏览器都试图在导航事件中保存表单值,这会导致像这样的测试用例出现问题。 –
我刚测试过这个。当我使用浏览器后退按钮时,ActionMethod不会被调用。当我点击我提供的“返回”链接时,它会被调用。尽管如此,当我在快速回答可能性之间进行切换时,无论如何都有可能无法正确保存。 – Nanek
在这种情况下,问题变为:每次都调用save方法吗?即使是这样,有可能在您要求最新答案后才会保存它。这些问题都不会通过线程修复。作为一个MVC应用程序,所有请求都在他们自己的线程上提供服务... –