2016-08-17 5 views
0
public class BookController : Controller 
{ 
    public ActionResult Show(int bid) 
    { 
    return View(); 
    } 
} 
routes.MapRoute(
       name: "Show", 
       url: "Book/{bid}/", 
       defaults: new {controller = "Book", action = "Show"}, 
       constraints: new {bid = @"\d+"} 
       ); 

если визитесли маршрутизатор не соответствует, как вернуть 404?

/книга/тест/

он возвращает ошибку 500, как вернуть 404?

Если маршрутизатор не соответствует, как вернуть 404?

+1

Попробуйте здесь: http://stackoverflow.com/questions/553922/custom-asp-net-mvc-404-error-page –

ответ

0

Вы можете получить фактическое представление, которое будет отображаться вместо этого, добавив элемент customErrors к вашему web.config, который перенаправит пользователя на определенный URL-адрес, когда произойдет определенный код состояния, который вы можете обрабатывать так же, как и с любым URL-адресом , Вот прохождение ниже:

Сначала бросьте HttpException, где это применимо. При создании экземпляра исключения обязательно используйте одну из перегрузок, которая принимает код состояния http как параметр, как показано ниже.

throw new HttpException(404, "NotFound"); 

Затем добавить пользовательский обработчик ошибок в файле web.config, чтобы вы могли определить, какой вид должен быть оказаны, когда происходит выше исключение. Вот пример ниже:

<configuration> 
    <system.web> 
     <customErrors mode="On"> 
      <error statusCode="404" redirect="~/404"/> 
     </customErrors> 
    </system.web> 
</configuration> 

Теперь добавьте запись маршрута в вашем Global.asax, который будет обрабатывать URL «404», которая будет проходить запрос на действие контроллера, который будет отображать View для 404 страницы ,

Global.asax

routes.MapRoute(
    "404", 
    "404", 
    new { controller = "Commons", action = "HttpStatus404" } 
); 

CommonsController

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

Все, что осталось, чтобы добавить вид для указанных выше действий.

Смежные вопросы