2016-08-17 82 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

你可以通過向你的web.config添加一個customErrors元素來顯示一個實際的視圖,當一個特定的狀態代碼發生時你將把用戶重定向到一個特定的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」,這將請求傳遞給控制器​​的作用是會顯示你的404頁面查看。

的Global.asax

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

CommonsController

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

所有剩下的就是添加一個視圖上述操作。