ASP.NET MVC - 實作 HandleUnknownAction 功能,以避免 404 的發生

摘要:ASP.NET MVC - 實作 HandleUnknownAction 功能,以避免 404 的發生

在開發 MVC 時,難免會將一些命名不好的 Action 重新命名,但前端有 Web 中若有用到這個 Action 且又沒改到的話,往往都會出現 404 的狀況。或者是,有一些使用者自以為記得網址,就在 URL 上面自行輸入就很容易導致 404 發生,進而使用者就以為是系統 Bug 就開始吵鬧工程師。這時威力強大的 MVC 就展現出它強有力的特性,那就是「HandleUnknownAction」,以下就來實作此方法...

步驟一:在 HomeController 中輸入以下的程式碼

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVC_HandleUnknownAction.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["Message"] = "Welcome to ASP.NET MVC!";

            return View();
        }

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

        protected override void HandleUnknownAction(string actionName)
        {
            ViewData["ErrorMessage"] = "404 錯誤...";
            this.View("Error").ExecuteResult(ControllerContext);
        }
    }
}

步驟二:在 Views / Shared / Error.aspx 中加入 ViewData["ErrorMessage"]

Code:
<asp:Content ID="errorContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2>
        Sorry, an error occurred while processing your request.
    </h2>
   
    <h1>
        <%=ViewData["ErrorMessage"] %>
    </h1>
</asp:Content>

結果:




參考:
ASP.NET MVC 開發心得分享 (7):HandleUnknownAction
Controller.HandleUnknownAction Method