내 필터를 통해 ViewBag에 배치 된 데이터를 어떻게 사용할 수 있습니까? Error.cshtml view?

공유 _Layout.cshtml 파일의 모든 뷰에서 사용할 수 있도록 일부 공통 정보를 ViewBag에 배치하는 작업 필터가 있습니다.

public class ProductInfoFilterAttribute : ActionFilterAttribute
{
    public override void
    OnActionExecuting(ActionExecutingContext filterContext)
    {
        //  build product info
        //  ... (code omitted)

        dynamic viewBag = filterContext.Controller.ViewBag;
        viewBag.ProductInfo = info;
    }
}

공유 _Layout.cshtml 파일에서, ViewBag에 넣은 정보를 사용합니다.

...
@ViewBag.ProductInfo.Name
...

컨트롤러 작업을 처리하는 동안 예외가 발생하면 표준 HandleErrorAttribute에 공유 된 Error.cshtml 뷰가 표시되어야하며 위의 작업 필터를 도입하고 사용을 시작하기 전에 작동했습니다. _Layout.cshtml의 ViewBag에서 새 값. 이제 내가 얻는 것은 내 사용자 정의 Error.cshtml보기 대신 표준 ASP.Net 런타임 오류 페이지입니다.

오류보기를 렌더링하는 동안 RuntimeBinderException ( "University binding on a null reference ")는 _Layout.cshtml에서 ViewBag.ProductInfo.Name을 사용할 때 발생합니다.

내 작업 필터가 원래 예외가 발생하기 전에 ViewBag에서 값을 성공적으로 설정 했음에도 불구하고 다음과 같은 새 컨텍스트가 내 Error.cshtml보기를 렌더링 할 때 빈 ViewBag가 사용됩니다.

사용자 지정 오류보기에서 사용할 수 있도록 작업 필터로 만든 데이터를 가져올 수있는 방법이 있습니까?

18
задан GBegen 6 July 2011 в 20:37
поделиться