2012-07-05 2 views
-1

TopPanel이라는 PartialView가 있습니다. 이 Panel은 응용 프로그램의 모든 페이지에서 생성 된 오류 메시지를 표시합니다. 이를 처리하기 위해 페이지에서 예외가 발생하면 TopPanel 컨트롤러에서 "ErrorHandler"액션을 호출합니다. ErrorHandler는 오류 메시지로 ViewBag를 업데이트하고 부분 뷰를 반환하는 Index 액션을 호출합니다 (현재는 테스트 중이므로 나중에 전체 페이지를 표시하기 위해 Main Controller Index Action을 호출하게됩니다). 나의 이해는 Index 액션을 호출하면 뷰가 다시로드되고 TopPanels PartilaView에있는 ErrorDiv가 ViewBag에 새로운 오류 메시지를 표시 할 수 있다는 것입니다. 그러나 아무 것도 표시되지 않으며 이유가 확실하지 않습니다. ViewBag 부분 뷰에는 내용을 사용할 수 없습니까?

는 Heres는 몇 가지 코드 -

ErrorHandler로 작업 - 내가 디버거에서 확인했습니다

public ActionResult ErrorHandler(string message) 
{ 
     ViewBag.ErrorMsg = message; 
     return RedirectToAction("Index"); 
} 

, "메시지"유효한 값을 가지고있다. ViewBag.ErrorMsg도 채워집니다. TopPanel의

색인 작업 -

<div id="errorMsgBox">@ViewBag.ErrorMsg</div> 

사람이 문제가 무엇인지 지적 할 수 -

public ActionResult Index() 
{   
     return PartialView(); 
} 

TopPanels PartialView 오류를 표시하는이 고독한 포함?

답변

2

RedirectToAction은 브라우저 리디렉션과 같습니다. 실제로 리다이렉트 코드를 브라우저에 보내고 액션 이름은 요청할 새로운 URL입니다. 따라서 실제로 새로운 서버에 대한 새로운 요청을 서버에 보내고 있습니다.이 요청에는 자체 ViewBag가 있습니다.

RedirectToAction 대신 View를 반환하고 PartialView 이름을 지정하기 만하면됩니다.

+0

+1 나를 대체 솔루션으로 제공합니다. 그러나, 나는 의심이있다. TopPanel 만로드하려면 TopPanel의 PartialView를 반환하면 그만큼 표시됩니다. 이것을 달성 할 수있는 방법이 있습니까? 또는 전체 페이지 (모든 부분보기가있는 상위 컨트롤러)를 다시로드해야합니까? – neuDev33

+0

부분, 작업 및 리디렉션에 대한 이해가 잘못되었습니다. 여기에 모든 것을 설명하는 것이 쉽지 않기 때문에 일종의 자습서를보아야합니다. 또한 이것은 MVC 애플 리케이션의 오류를 처리하는 방법이 아닙니다. – mare

2

리디렉션을 수행 중이므로 실제로 이전의 ViewBag 속성 값에 대해 알지 못하는 완전히 별도의 요청/응답으로 끝납니다.