#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[«действие»] для получения имени действия и использует это для поиска представления.