2011-03-17 2 views
2

MVC3에서 작업하고 있습니다. 오류 메시지를 표시하기 위해 _Layout.cshtml 파일에 DIV를 만들었으며 뷰 폴더에 C# 클래스 ErrorMessage를 만들었습니다. _layout.cshtml 파일_Layout MVC3에있는 액세스 Div ID

DIV :


이것은 클래스의 ErrorMessage 코드 : 클래스에서

public static class ErrorMessage 
    { 
     public static void Show(string message) 
     { 
      ErrorMessageDiv.InnerText = message; 
     } 
     public static void Hide() 
     { 
     } 
    } 

이 오류를 제공 ErrorMessage가

" 에러 메시지 Div가 존재하지 않습니다 현재 컨텍스트 "

MVC3에서 어떻게 할 수 있습니까?

+2

MVC3은 일반적인 WebForm처럼 "코드 숨김"또는 포스트 백과 작동하지 않습니다. View (cshtml)에 필요한 모든 정보는 컨트롤러 (또는 자바 스크립트로 비동기)에서보기로 전달되어야합니다. –

답변

2

특정 키를 사용하여 TempData 컬렉션에서 오류 메시지를 찾는 _layout.cshtml에서 코드 섹션을 만드는 방법은 어떻습니까?

컨트롤러에서 오류가 발생하면 오류 텍스트를 TempData에 추가하면 렌더링됩니다. 어떤 오류가 있는지 점검하고 TempData에 추가 컨트롤러에

: 다음

public ActionResult Index() 
    { 
     bool isError = true; 

     if (isError) 
     { 
      TempData["ErrorMessage"] = "There has been an error"; 
      // Or if you want to use the ErrorMessage class 
      // ErrorMessage.ShowError("There has been an error"); 
     } 
     return View(); 
    } 

을 마스터에 템플릿

<body> 

@if (TempData["ErrorMessage"] != null) 
{ 
    <div class="Error"> 
     @TempData["ErrorMessage"] 
    </div> 
} 

@RenderBody() 

_layout.cshtml 여기

은 예입니다

TempData는 액세스 한 후 값을 자체에서 제거합니다. nce.

ErrorMessage 클래스를 계속 사용하려면 TempData를 감싸기 위해 변경하십시오.

public static class ErrorMessage 
{ 
    public static void ShowError(string message) 
    { 
     TempData["ErrorMessage"] = message; 
    } 
} 
+0

내 응용 프로그램에는 많은 컨트롤러와 모델이 있습니다. 사실 레이아웃 파일에있는 Div 내부에 오류 메시지를 표시하는 단일 클래스를 만들고 싶습니다. 나는 그것이 MVC3에서 가능하다면하지 않습니까? – user664195

+0

@ user664195 기존 ErrorMessage 클래스를 포함하도록 답변을 업데이트했습니다. MVC에서는 View 요소를 얻는 방법이 없습니다. 컨트롤러와 모델이 View에 대해 알지 못하게 패턴을 지정하기 때문입니다. – Swaff

관련 문제