Как я могу сделать так, чтобы мои страницы с ошибками выглядели более дружелюбно?

#asp.net-core #entity-framework-core

#asp.сетевое ядро #сущность-структура-ядро

Вопрос:

У меня есть приложение .Net Core Entity Framework, которое позволяет пользователю просматривать списки производства движка, а также редактировать определенные вещи.

Если ошибок нет, все выглядит великолепно.

Но когда у меня возникает ошибка, он использует уродливый вид вместо моего обычного вида.

Вот пример контроллера, который отлично смотрится, когда ошибок нет, но если они есть, это просто черный текст на белом фоне.

Есть ли в любом случае способ, чтобы он соответствовал остальной части моего веб-приложения?

Спасибо!

 [HttpPost] [ValidateAntiForgeryToken] public async Tasklt;IActionResultgt; Edit(int id, [Bind("Id,EngineName,FactoryName")] ProductionRound productionRound) {  if (ModelState.IsValid)  {  try  {  _context.Update(productionRound);  await _context.SaveChangesAsync();  }  catch (DbUpdateConcurrencyException)  {  if (!ProductionRoundExists(productionRound.Id))  {  return NotFound();  }  else  {  throw;  }  }  return RedirectToAction(nameof(Index));  }  return View(productionRound); }  

Ответ №1:

Вы можете настроить страницу с ошибкой и использовать UseStatusCodePagesWithReExecute UseExceptionHandler промежуточное программное обеспечение и выполнить страницу с ошибкой, как показано ниже:

Вид( StatusCode.cshtml находится в Views/Shared папке):

 lt;div class="alert alert-danger"gt;  lt;h1 class="alert-heading"gt;  lt;spangt;This is a user-friendly error page :)lt;/spangt;  lt;/h1gt;  Error code: @ViewData["code"] lt;/divgt;  

Контроллер:

 public class ErrorController : Controller {  [Route("Error/{statusCode}")]  public IActionResult StatusCodeError(int statusCode)  {  ViewData["code"] = statusCode;  return View("StatusCode");  } }  

Startup.cs:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {  app.UseStatusCodePagesWithReExecute("/Error/{0}");  app.UseExceptionHandler("/Error/500");   //other middleware... }