public async Task <ActionResult> Respond(int id, int?pageId)
        {
            var userSection = await _surveyManager.GetCurrentUserSectionAsync(User.Identity.GetUserId(), id);

            var userPages = (await _surveyManager.GetUserPagesAsync(User.Identity.GetUserId(), userSection.Id.GetValueOrDefault())).ToList();
            var userTest  = await _testManager.GetAsync(User.Identity.GetUserId(), id);

            var userPage = pageId.HasValue
                ? userPages.Single(p => p.Page.Id == pageId.Value)
                : await _surveyManager.GetCurrentUserPageAsync(User.Identity.GetUserId(), id);

            if (userPage == null)
            {
                return(RedirectToAction("SectionReview", "Test", new { id }));
            }

            var viewModel = _mapper.Map <ResponseViewModel>(userPage);

            var pageIndex = userPages.FindIndex(up => up.Page.Id == userPage.Page.Id);

            viewModel.TestId      = userTest.Id;
            viewModel.PriorPageId = pageIndex != 0
                ? userPages[pageIndex - 1].Page.Id
                : (int?)null;

            return(View((viewModel.Page.GetType().BaseType ?? viewModel.Page.GetType()).Name, viewModel));
        }