공유 _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가 사용됩니다.
사용자 지정 오류보기에서 사용할 수 있도록 작업 필터로 만든 데이터를 가져올 수있는 방법이 있습니까?