Я реализовал следующий глобальный пользовательский фильтр исключений:
public class ExceptionCustomFilter : IExceptionFilter
{
private readonly IWebHostEnvironment _hostingEnvironment;
private readonly IModelMetadataProvider _modelMetadataProvider;
private readonly IHttpContextAccessor _httpContextAccessor;
public ExceptionCustomFilter(
IWebHostEnvironment hostingEnvironment,
IModelMetadataProvider modelMetadataProvider,
IHttpContextAccessor httpContextAccessor)
{
_hostingEnvironment = hostingEnvironment;
_modelMetadataProvider = modelMetadataProvider;
_httpContextAccessor = httpContextAccessor;
}
public void OnException(ExceptionContext filterContext)
{
//Redirect to global handler
filterContext.Result = new ViewResult();
{
ViewName = "Error"
};
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
}
}
и добавил следующий код в мой метод запуска ConfigureServices()
:
services.AddControllersWithViews(options =>
{
options.Filters.Add(typeof(ExceptionCustomFilter));
});
services.AddMvc(options =>
{
options.EnableEndpointRouting = false;
options.Filters.Add(typeof(ExceptionCustomFilter));
});
Я хотел сделать мой " Представление «Ошибка» (которое в настоящее время находится в моей папке Views> Shared ) отображается как модальное каждый раз, когда мой ExceptionFilter перехватывает любое исключение.
Мой просмотр «Error.cs html» сейчас :
// Render styles
<script type="text/javascript">
$(function () {
$('#modalError').modal('show');
});
</script>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<div class="error">
<i class="icon-erro fa fa-exclamation-circle" aria-hidden="true"></i>
<h2> Error </h2>
</div>
</div>
<div class="modal-body">
<div class="error">
<p>
// content
</p>
</div>
</div>
</div>
</div>