2009-02-01 9 views
1

다음과 같은 시나리오가 있습니다.게시/리디렉션/가져 오기 : 특정 경로로 리디렉션

다른 페이지에서 호출 할 수있는 편집 페이지가 있습니다. 이 페이지는 현재 엔티티에 대한 상세보기 또는 엔티티에 대한 목록보기 (경로에서 검색이 있거나 없음) 일 수 있습니다.

어떻게 MVC 프레임 워크를 사용하여 원래 호출 페이지로 깨끗하게 리디렉션합니까? 물론 나는 단순히 내 TempData에 HttpContext.Request.Url 값을 전달할 수 있지만 내 눈 (또는 오류, 코)에서는 그 종류의 냄새가 난다. 그것은 나머지 코드보다 낮은 레벨에 있습니다.

컨트롤러 컨텍스트에서 이전 페이지의 경로 값을 가져 오는 방법이 있습니까? 내가 가지고 있다면, 나는 그것을 일시적으로 저장하고 리디렉션에 전달할 수 있습니다.

답변

2

Do not use TempData when not redirecting. 편집 페이지의 AJAX 요청 하나가 발생하고 TempData가 사라집니다.

Tomas는 숨겨진 요소 또는 쿼리 문자열 매개 변수를 사용하는 것이 좋습니다. 그러나 제출 된 값을 위생 처리해야합니다. 웹의 이전 사이트를 리디렉션하고 싶지는 않습니다. 리디렉션 할 페이지가 사이트의 일부인지 확인해야합니다.

+0

나는이 접근법을 결국 사용했는데, TempData를 사용하지 않는 것에 대한 추가 정보 때문에 이것을 받아 들였습니다. –

1

언제든지 폼을 게시 할 때 리디렉션 할 컨트롤러를 알려주는 숨겨진 양식 요소를 가질 수 있습니다. get 요청을 사용할 때 비슷한 방식으로 쿼리 문자열을 사용할 수 있습니다. 가장 아름다운 해결책은 아니지만 브라우저에서 쉽게 변경 (또는 생략) 할 수있는 httpreferrer 또는 다른 헤더를 신뢰하는 것보다 훨씬 안전합니다.

관련 문제