Я создаю свой первый ASP.NET веб-сайт MVC, и я пытаюсь выяснить, как реализовать 404 страницы.
Я должен создать контроллер, названный "404Controller?" Если так, как я затем регистрирую этот Контроллер в IIS так, чтобы он перенаправил 404 с к той странице? Кроме того, в ситуации, где что-то не найдено (в базе данных, например) некоторым другим кодом Контроллера, как я перенаправил бы запрос к своим 404 страницам?
Мне больше всего нравится возвращать представление с именем 404.
if (article == null)
return View("404");
Это позволит вам иметь общее представление 404 в общей папке и конкретное представление 404 для контроллера статьи.
Кроме того, большой плюс в том, что здесь нет перенаправления.
Нет однозначного ответа на то, что вы пытаетесь сделать, простейшего и мне нравится использовать класс HttpException
, например
public ActionResult ProductDetails(int id) {
Product p = this.repository.GetProductById(id);
if (p == null) {
throw new HttpException(404, "Not Found");
}
return View(p);
}
В web.config вы можете настроить страницы customError, например
<customErrors mode="RemoteOnly" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="Views/Errors/Http404.aspx" />
</customErrors>
Вы правы, создайте NotFoundController
и сопоставьте ему маршрут, скажем / 404
, а затем поместите URL-адрес в свой файл web.config
(см. @ R0MANARMY) ответ.
Вы можете просто создать новое исключение HttpException (404, «Not Found»)
или, если вы не хотите создавать исключения (что дорого), вы можете просто установить код состояния на 404 через Response.StatusCode
, а затем вернуть View ("My404Template")
из ваших методов действия.