private async Task <ActionResult> GetPageViewResult(Controller controller, PageActionRoutingState state) { IEditablePageViewModel vm; var pageRoutingInfo = state.PageRoutingInfo; // Some page types have thier own specific view models which custom data switch (pageRoutingInfo.PageRoute.PageType) { case PageType.NotFound: controller.Response.StatusCode = (int)HttpStatusCode.NotFound; vm = _pageViewModelMapper.Map(state.PageData, state.VisualEditorMode); break; case PageType.CustomEntityDetails: var model = await GetCustomEntityModel(state); vm = _pageViewModelMapper.MapCustomEntityModel(state.PageData.Template.CustomEntityModelType, state.PageData, model, state.VisualEditorMode); break; //case PageType.Error: // Response.StatusCode = (int)HttpStatusCode.InternalServerError; // vm = _pageViewModelMapper.Map(page, siteViewerMode); // break; default: vm = _pageViewModelMapper.Map(state.PageData, state.VisualEditorMode); break; } // set cache SetCache(vm, state); var result = new ViewResult() { ViewData = new ViewDataDictionary(vm), ViewName = state.PageData.Template.FullPath }; return(result); }