asp.net mvc 5 — система не находит существующее представление

#asp.net #razor #asp.net-mvc-5

#asp.net #razor #asp.net-mvc-5

Вопрос:

Итак, вот код, который выполняется:

 return RedirectToAction("BadFileError", "Error");
  

Которое затем перенаправляет средство просмотра на:

 https://localhost:44340/Error/BadFileError
  

Которое существует в
введите описание изображения здесь

Что, черт возьми, я здесь упускаю? Почему не может Asp.net кажется, вы видите представления, которые я создаю без использования системы строительных лесов? Вот ошибка, которую оно выдает: введите описание изображения здесь

Комментарии:

1. Не перенаправляйте пользователей на отображение сообщений об ошибках, поскольку это нарушает природу HTTP и REST. Вместо этого вы должны возвращать ответы об ошибках напрямую с соответствующими кодами состояния.

Ответ №1:

Ваш браузер отправит запрос в yourSite/Error/BadFileError и aspnet mvc framework не будет напрямую обслуживать файл razor.

У вас должен быть метод действия с таким именем в вашем ErrorController . Запрос будет направлен к методу action, а не к файлу view. Ваш метод action может вернуть это представление (или любое другое представление)

Добавьте это в ErrorController.

 public ActionResult BadFileError()
{
   return View();
}
  

Кроме того, если вы просто хотите показать пользователю содержимое представления с ошибкой, вы можете сделать это с помощью View() вызова метода с полным путем к вашему представлению с ошибкой. Вам не обязательно выполнять перенаправление (которое выдаст новый http-запрос).

Итак, вместо перенаправления вы можете сделать

 return View("~/Views/Error/BadFileError.cshtml");
  

Комментарии:

1. Все еще получаю мой Asp.net ноги здесь.

2. Просто интересное замечание. Когда вы вызываете View() без аргументов, он использует RouteData.Values[«действие»] для получения имени действия и использует это для поиска представления.