404 страницы в ASP.NET MVC

Я создаю свой первый ASP.NET веб-сайт MVC, и я пытаюсь выяснить, как реализовать 404 страницы.

Я должен создать контроллер, названный "404Controller?" Если так, как я затем регистрирую этот Контроллер в IIS так, чтобы он перенаправил 404 с к той странице? Кроме того, в ситуации, где что-то не найдено (в базе данных, например) некоторым другим кодом Контроллера, как я перенаправил бы запрос к своим 404 страницам?

5
задан Maxim Zaslavsky 4 April 2010 в 05:27
поделиться

3 ответа

Мне больше всего нравится возвращать представление с именем 404.

if (article == null)
    return View("404");

Это позволит вам иметь общее представление 404 в общей папке и конкретное представление 404 для контроллера статьи.

Кроме того, большой плюс в том, что здесь нет перенаправления.

7
ответ дан 18 December 2019 в 06:22
поделиться

Нет однозначного ответа на то, что вы пытаетесь сделать, простейшего и мне нравится использовать класс 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>
14
ответ дан 18 December 2019 в 06:22
поделиться
  1. Вы правы, создайте NotFoundController и сопоставьте ему маршрут, скажем / 404 , а затем поместите URL-адрес в свой файл web.config (см. @ R0MANARMY) ответ.

  2. Вы можете просто создать новое исключение HttpException (404, «Not Found») или, если вы не хотите создавать исключения (что дорого), вы можете просто установить код состояния на 404 через Response.StatusCode , а затем вернуть View ("My404Template") из ваших методов действия.

0
ответ дан 18 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: