저는 VS13 - MVC 5에서 일하고 있는데, 한 컨트롤러 메서드에서 다른 컨트롤러 메서드로 데이터를 전달하는 데 문제가 있습니다.내 배열이 다른 컨트롤러 메서드로 전달되지 않는 이유는 무엇입니까?
이것은 HttpPost 컨트롤러 메서드의 마지막 코드입니다.이 코드를 통해 단계별로 데이터를 처리하고 아래에서 볼 수있는 redirecttoaction 메서드에 데이터가 전달되는지 확인합니다.
...<irrelevant code that works fine on top>...
int[] idArray = new int[questionsToUse.Count];
for (var i=0; i<questionsToUse.Count; i++)
{
idArray[i] = questionsToUse[i].QuestionId;
}
return RedirectToAction("ShowQuiz", new { array = idArray });
}
그리고 이것은로 리디렉션되고있는 컨트롤러 방법 :
[HttpGet]
public ActionResult ShowQuiz(int[] array)
{
var caseToShow = new Medcase();
caseToShow.Title = "Quiz";
caseToShow.Questions = new List<Question>();
for (var i = 0; i < array.Count(); i++)
{
caseToShow.Questions.Add(db.Questions.Find(i));
}
return View(caseToShow);
}
나는 두 가지 방법에 중단 점을 넣고 첫 번째 방법은 아래 마지막 redirecttoaction 라인에 잘 작동 언급 한 바와 같이, 그들을 통해 강화 내가 볼 수있는 곳 매개 변수를 설정하면 데이터가 있습니다.
하지만 다음 단계로 넘어 가면 배열 값은 매번 null이됩니까? 아무도 왜 내게 설명 할 수 있습니까? 나는이 메소드를 다른 메소드에 성공적으로 사용했다. 여기서 나는 하나의 int 값을 다른 메소드에 단순히 전달했다. 이게 내가 배열이나 뭔가를 전달할 수 없다는 것과 관련이 있나? 또는 httppost 메소드 (리디렉션)의 끝에서 발생하기 때문입니까?
내가 잘못 생각하고있는 것처럼 보일 수 없다. 모든 도움을 주시면 감사하겠습니다.
필자가 배열에 넣었 기 때문에 하나의 값을 전달할 때 그 값이 잘된다는 것을 알았습니다 ... 전송할 수있는 컬렉션 유형이 있는지 누군가가 알 수 있습니까? – ObedMarsh
"TempData"를 사용하여이 문제를 해결하는 방법을 찾았습니다. – ObedMarsh
리디렉션을 수행 중이므로 복잡한 유형을 전달할 수 없습니다. 방법을 호출하는 것과는 다릅니다. 배열을 전달하려면 데이터를 직렬화해야합니다. – Shoe