我正在構建一個問題。當用戶點擊多項選擇題的答案時(這是一個單選按鈕),我調用一個操作方法來保存這個答案。我應該在通過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應用程序,所有請求都在他們自己的線程上提供服務... –