private async Task <IActionResult> GetErrorView(int statusCode, ErrorPageViewModelBuilderParameters vmParameters) { var viewName = FindView(statusCode); var viewModel = await _pageViewModelBuilder.BuildErrorPageViewModelAsync(vmParameters); return(View(viewName, viewModel)); }
/// <summary> /// Maps data to an empty view model for a generic error page. /// </summary> /// <param name="viewModel">The view model to map data to.</param> /// <param name="mappingParameters">The data passed through to map to the view model.</param> public virtual Task MapErrorPageViewModelAsync( IErrorPageViewModel viewModel, ErrorPageViewModelBuilderParameters mappingParameters ) { if (viewModel == null) { throw new ArgumentNullException(nameof(viewModel)); } if (mappingParameters == null) { throw new ArgumentNullException(nameof(mappingParameters)); } if (mappingParameters.StatusCode < 100) { throw new ArgumentOutOfRangeException(nameof(mappingParameters.StatusCode)); } viewModel.StatusCode = mappingParameters.StatusCode; viewModel.StatusCodeDescription = GetStatusCodeDescription(viewModel.StatusCode); viewModel.PageTitle = "Error: " + viewModel.StatusCodeDescription; viewModel.MetaDescription = "Sorry, an error has occured"; viewModel.Path = mappingParameters.Path; viewModel.PathBase = mappingParameters.PathBase; viewModel.QueryString = mappingParameters.QueryString; return(Task.CompletedTask); }
/// <summary> /// Creates and maps data to a view model for a generic error page. /// </summary> /// <param name="mappingParameters">The data passed through to map to the view model.</param> public virtual async Task <IErrorPageViewModel> BuildErrorPageViewModelAsync( ErrorPageViewModelBuilderParameters mappingParameters ) { var viewModel = _pageViewModelFactory.CreateNotFoundPageViewModel(); await _pageViewModelMapper.MapErrorPageViewModelAsync(viewModel, mappingParameters); return(viewModel); }
public Task <IActionResult> Exception() { const int STATUS_CODE = 500; var feature = HttpContext.Features.Get <IExceptionHandlerPathFeature>(); var request = HttpContext.Request; var vmParameters = new ErrorPageViewModelBuilderParameters() { StatusCode = STATUS_CODE, Path = feature.Path, PathBase = request.PathBase, QueryString = request.QueryString.Value }; return(GetErrorView(STATUS_CODE, vmParameters)); }
public async Task <IActionResult> ErrorCode(int statusCode) { var request = HttpContext.Request; var feature = HttpContext.Features.Get <IStatusCodeReExecuteFeature>(); if (statusCode == (int)HttpStatusCode.NotFound) { return(await _notFoundViewHelper.GetViewAsync(this)); } var vmParameters = new ErrorPageViewModelBuilderParameters() { StatusCode = statusCode, Path = feature?.OriginalPath ?? request.Path, PathBase = feature?.OriginalPathBase ?? request.PathBase, QueryString = feature?.OriginalQueryString ?? request.QueryString.Value }; return(await GetErrorView(statusCode, vmParameters)); }