2012-05-18 2 views
2

내 asp.net mvc 2 응용 프로그램에서 RedirectToAction을 통해 전달되는 매개 변수가 왜 손실되는 경우가 있습니까?내 asp.net mvc 2 응용 프로그램에서 RedirectToAction을 통해 전달되는 매개 변수가 왜 손실되는 경우가 있습니까?

이 말은 내가 당황 스럽습니다. 때로는 RedirectToAction을 사용하여 작동하지 않는 경우가 있습니다. 나는 어떤 운이나 이유도 발견하지 못했습니다.

 return RedirectToAction("ExportReport", 
      new { FieldOrder = fieldOrder }); 

나는 또한이 변형 시도했다 : :

 routes.MapRoute(
      "ExportReport", 
      "{controller}.aspx/{action}/{FieldOrder}", 
      new { controller = "SearchAndExport", action = "ExportReport", FieldOrder = UrlParameter.Optional } 
     ); 

그리고 마지막으로, 프로토 타입 :

 return RedirectToAction("ExportReport", "SearchAndExport", 
      new { FieldOrder = fieldOrder }); 

내가 내 global.asax.cs에서 다음 추가를 여기 예제 리디렉션 할 작업 :

public FileContentResult ExportReport(List<String> FieldOrder) 

FieldOrder의 데이터로 인해 리디렉션 된 작업이 수행되지 않습니다. 왜? 나는이 일을 여러 번 해냈다는 것을 안다. 뭐라 구요?

EDIT 1

가 완벽하게 명확하게하려면, FieldOrder는 List<String>이다. 사이트 영역을 사용하지 않습니다. 리디렉션 자체는 작동하지만 데이터는 메서드에 전달되지 않습니다. 디버그를 통해 전달되어야하는 데이터가 있음을 확인했습니다.

또한 TempData를 사용하지 않을 것입니다. 하나 이상의 액션이 다른 더 일반적인 액션으로 리디렉션되는 경우, 그것은 지저분 해집니다. 매개 변수를 통해 데이터를 전달하는 것이 더 깨끗합니다 (IMHO). 길을 잃지했다 TempData에서 FieldOrderhttp://msdn.microsoft.com/en-us/library/system.web.mvc.tempdatadictionary.aspx

+0

지역을 사용하고 있습니까? 리디렉션이 항상 올바르게 작동합니까? –

+0

나는 어떤 분야도 사용하지 않는다. 리다이렉트는 리턴 RedirectToAction 라인에 넣은 값을 매개 변수로 전달하지 않는 것 외에도 올바르게 작동합니다. – jason

답변

1

여기에 내 옛날 몇 가지 질문을 통해가는 (하나의 리디렉션에 대한 데이터를 보유하고) 당신의

0

스토어 ...

이 값을 리디렉션하는 이유는 내가이었다이었다 복잡한 객체를 매개 변수로 전달합니다. ASP.NET MVC 2는이를 처리하지 못했습니다. 기본 유형 매개 변수로 리디렉션하면 정상적으로 작동합니다.

+0

나는 이것이 실행 가능한 선택이라는 것을 알고 있지만 그렇게하는 것을 싫어합니다. 믹스에서 길을 잃기 쉽습니다. 설명한 방식으로 RedirectToAction을 사용하면 효과가 있습니다. 나는 왜 그것이 아닌지 알고 싶다. 그래도 제안 해 주셔서 감사합니다. – jason