2014-10-24 3 views
0

사용자가 동일한 양식 세부 정보를 두 번 제출할 수있는 이유를 설명하는 데 어려움을 겪고 있습니다. 처음에는 제출 버튼이 두 번 푸시되었다고 생각했습니다. .MVC 컨트롤러 액션에서 두 번 submmited 양식

데이터베이스의 결과를 확인하면 동일한 정보가 두 번 입력되었지만 동일한 날짜 시간 스탬프가 두 번째로 입력되었음을 볼 수 있습니다. (확실한 경우 다시 제출하려면 적어도 초가 걸립니다)

또한 설문 조사가 입력되고 저장되면 사용자는 다른 페이지로 리디렉션됩니다.

누구에게 아이디어가 있습니까?

[HttpPost] 
public ActionResult InputResult(SurveyViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     Survey_Result InputResult = new Survey_Result(); 

     InputResult.SurveyStatusID = model.SurveyStatusID; 
     InputResult.Q1DateCompleted = DateTime.Now; 
     InputResult.Q2 = model.Q2; 
     InputResult.Q3 = model.Q3; 
     InputResult.Q10 = model.Q10; 
     InputResult.Q11 = model.Q11; 
     InputResult.Q11Other = model.Q11Other; 
     InputResult.DateAdded = DateTime.Now; 
     InputResult.AddedBy = Convert.ToInt32(User.Identity.GetUserId()); 

     _surveyService.AddSurvey(InputResult); 
     _surveyService.Save(); 

     return RedirectToAction("Details", "Survey", new { id = model.SurveyStatusID, feedback = "InputComplete" }); 
    } 

    return RedirectToAction("Details", "Survey", new { id = model.SurveyStatusID, feedback = "InputError" }); 
} 
+0

버튼을 1 초에 두 번 누르는 것이 꽤 쉽습니다. – DavidG

답변

-1

AddSurvey와 저장이 모두 필요합니까?

저장을 제거하고 다시 시도하십시오.

+1

그의 서비스 등급에 달려 있지만, 나는 그가 필요하다고 생각할 것이다. – DavidG

1

코드가 잘 보입니다. 사용자에게 액세스 권한이 있으면 Fiddler를 열어 데이터를 두 번 게시하는지 확인할 수 있습니다. 그것이 항상 그때 거의 확실하게 사용자 오류 IMHO가 발생하지 않는 경우.

클라이언트에 액세스 할 수없는 경우이 서버에서 수집 할 위치에있는 경우 각 게시물 요청 또는 디버그 행의 로그 항목을 팝업 할 수 있습니다.

나는 클라이언트 측 자바 스크립트로 인해 버튼을 클릭 할 수 없게하는 트릭을 만들었습니다.

+0

사용자 오류가 발생하여 페이지를 몇 초 동안 얼려서 다시 '클릭'하는 사용자에게 다시 이야기하는 것처럼 보입니다. 그것은 클라이언트 쪽 자바 스크립트가 갈 길을 것 같습니다. – Dez79

관련 문제