Как отобразить сообщение об ошибке в сообщении об удалении mvc5. искали, но ничего не нашли на удалить

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

Использование ModelState.AddModelError (string.Empty, "message") отлично работает в Create post, но не в Delete post.

Любая помощь будет оценена по достоинству.

Часть контроллера

 // POST: Divisions/Delete/5
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    [DbFunction]
    public async Task<IActionResult> DeleteConfirmed(string id)
    {
        try
        {
            var division = await _context.Division.FindAsync(id);
            _context.Division.Remove(division);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        catch (DbUpdateException)
        {
            ModelState.AddModelError(string.Empty, "Cannot Delete. Associated Records Exist");
        }
        return RedirectToAction(nameof(Delete));
    }

Часть представления удаления

<form asp-action="Delete">
    <div asp-validation-summary="All" class="text-danger"></div>
    <input type="hidden" asp-for="Division1" />
    <input type="submit" value="Delete" class="btn btn-default" /> |
    <a asp-action="Index">Back to List</a>
</form>      

Попробуйте использовать TempData для отображения сообщения на просмотре. Сохраните свое сообщение в TempData и отобразите его на просмотре.

Saineshwar 26.10.2018 06:32

Если вы добавляете ModelState, вам нужно вернуть представление, а не перенаправить. После перенаправления ModelState теряется

user3559349 26.10.2018 08:05

Спасибо, Стивен, изменив return RedirectToAction (nameof (Delete)); вернуть View (разделение); дал мне ошибку, но простой return View (); работает. Мне нравятся простые ответы. Будучи новичком, я не совсем понимаю, почему View (разделение); выдает ошибку.

Rod 27.10.2018 06:38
0
3
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы добавляете ModelState, вам нужно вернуть представление, а не перенаправить. После перенаправления ModelState теряется.

Используйте return View ();

Не возвращать redirectToAction (nameof (Index)); Не возвращать Просмотр (xxxxxxx);

Другие вопросы по теме