Asp.net mvc 3 在通过AJAX执行操作方法时是否应该使用线程?
我正在建立一个问题库。当用户点击一个选择题的答案时(这是一个单选按钮),我调用一个动作方法来保存这个答案 守则:Asp.net mvc 3 在通过AJAX执行操作方法时是否应该使用线程?,asp.net-mvc-3,Asp.net Mvc 3,我正在建立一个问题库。当用户点击一个选择题的答案时(这是一个单选按钮),我调用一个动作方法来保存这个答案 守则: <script language="javascript"> $(document).ready(function () { $('.MCQRadio').click(function () { var question_id = $(this).attr('question-id'); var mcq_id = $(this
<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) {
}
});
});
});
如果一个问题有5个答案,我随机快速点击它们,然后返回上一页,即返回正确答案时不会保存。我应该使用线程来确保保存正确的答案吗?怎么做
谢谢您可以创建一个JSOn对象并将答案保存在JSOn中,而不是一直通过post保存答案。然后,您可以在最后一次性发布所有已完成的答案 看看这个: 基本上,这将允许您在远程机器上存储会话数据-json,然后您只需要添加、删除功能,然后就可以开始了 我在一个应用程序中很大程度上使用了这一点,该应用程序需要使用画布上对象的位置来更新服务器,但是使用sessvars,我只是将所有的X和Y位置保留在画布上,并在完成后最后推送JSON 如果更改页面,则无需服务器调用即可从JSON对象获取值
请注意,您最好使用选项卡或隐藏表单的部分,这样可以减少重新填充的需要,例如page1、page2等,因为它们已经存在,只是隐藏了 您确定您实际上正在上一页上进行加载(您可以使用调试器进行检查)。很多浏览器都试图在导航事件中保存表单值,这可能会在类似这样的测试用例中导致问题。当我使用浏览器后退按钮时,不会调用ActionMethod。当我点击我提供的“返回”链接时,它被称为。尽管如此,当我在答案可能性之间快速切换并返回任意一种方式时,有时它们无法正确保存。在这种情况下,问题变成:是否每次都调用save方法?即使是这样,也有可能是在您请求最新答案后保存的。不过,这些问题都不会通过线程解决。作为一个MVC应用程序,所有的请求都在它们自己的线程上提供服务…我应该做什么来确保所有答案都被正确保存?哦,作为一个提示,sessvars会保留下来,所以即使它们离开了测试,稍后再回来,你也可以重新填充答案。。。非常好,没有最后的按钮。我的老板希望它能自动保存。如果用户没有完成整个调查,你会怎么做?你可以设置一个计时器,比如说每5分钟自动保存一次,这样你就可以同时获得最佳效果和部分内容的保存!
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();
}