2011-09-06 4 views
1

다른보기를 반환하는 가장 좋은 방법은 무엇인지 알고 싶습니다. 데이터 제출 양식이 있지만 제출 된 데이터에 따라보기를 선택한다고 가정 해 보겠습니다. 나는 리다이렉션을 사용하지 않기를 바랄 것이다. 게시 된 데이터에 표시하고 싶은 것들이 있기 때문이다.ASP.Net MVC 3 - 단일 컨트롤러, 단일 액션 및 다중보기

예를 들어 리디렉션을 사용하지 않고 저장을 클릭하면 세부 정보보기를 표시하는 편집 양식을 가질 수 있습니다.

이것을 표시하는 조건부 if 문을 포함하는 단일보기를 사용하여이 작업을 수행 할 수 있지만 너무 많은 코드 없이도 내보기가 단순하게 유지되는 경우가 있습니다. 데이터가 게시되면 컨트롤러에서 표시 할보기 만 선택할 수 있으면 좋을 것입니다.

답변

3

은 Post/Redirect/Get 패턴을 사용해야합니다. 여전히 "물건을 표시 할 수 있습니다." URI에 ID를 전달하고 새로운 GET에서 찾거나 TempData을 사용할 수 있습니다.

게시/리디렉션/가져 오기를 회피하려는 시도는 이 아니며 좋은 해결책입니다. 다른 것들 중에서도, 그것은 뒤로 버튼을 깰.

+0

"해야할까요?" 필요없는 경우이 여분의 왕복을 데이터베이스에 추가하는 이유는 무엇입니까? 뒤로 버튼이 깨질까요? 제출 한 데이터에 오류가 있다고 가정 해 봅시다. 게시/리디렉션/가져 오기 대신 게시가 수행되며 뒤로 버튼은 계속 작동합니다. 데이터가 유효하다면 왜 그렇게하지 않습니까? 데이터의 유효성에 따라 다른 견해가 필요합니다. –

+0

성공적인 편집 후에 하나의 DB 읽기를 "최적화"하려고하면 바보입니다. 앱에서 가장 느린 부분이라고 생각하십니까? Post/Redirect/Get에 관해서는 왜 그렇게 많이 쓰여졌을 때 패턴의 목적을 다시 말해달라고합니까? 당신이 제안하는 것에는 많은 문제점들이 있습니다; 패턴을 연구 할 시간을 가져주십시오. –

+0

물론 데이터베이스 액세스는 앱에서 가장 느린 부분입니다. 이는 디스크 및 네트워크를 통해 데이터에 액세스하는 것을 의미합니다. 그러나 고마워, 나는 조금 덜 서두를 때 그 패턴에 관한 약간의 연구를 할 것이다. –

6

반환 할보기의 이름을 지정할 수있는 View() 메서드에 오버로드가 있습니다.

return View("DetailsView", model); 
+1

그러나 그는 그의 질문에 언급 된 목적을 위해 이것을 사용하지 말아야합니다! –

+0

두 분 모두에게 감사드립니다. 이제 저는 교육받은 선택을 할 수 있습니다. –

관련 문제