【ASP.NET MVC】 如何讓Conroller導向特定Action

如果有些使用者會隨便在網址後面加東西會發生什麼事情呢?

譬如我的正常網址是 https://webberTest/

那我非常調皮地把url 改成 https://webberTest/D6546464654645646546465465456

相當然爾,網址參數亂給,沒有設定的話 100% 是黃頁...

就算不是你的錯 但我看客戶以及你家PM會爆炸

現在教學一個簡單的 如果我們網址出現錯誤  要如何導到Index這頁

 

我們以小專案來做個小範例

上面的網址列正常是 http://localhost:53584/Home 也就是 /Home/Index這頁

但我這個調皮的使用者把他網址亂打 http://localhost:53584/Home/askdl;akd;alkd;adk

結果我的網頁就變成

why?

因為就路由找不到相對的參數 也就是你Controller的actionName 沒有相對應的名稱

所以....如果客戶想要導回http://localhost:53584/ 避免這個問題

該如何做呢?

首先很簡單

我會在基底類別 controller 新建一個抽象類別 BaseController 然後繼承Controller

 public abstract class BaseController : Controller
    {
        protected override void HandleUnknownAction(string actionName)
        {
            this.RedirectToAction("Index").ExecuteResult(this.ControllerContext);
        }
    }

然後在我的每個Controller 繼承的 Controller 改成 剛剛設定的BaseController 也就是改成下圖這樣 

為啥要繼承呢? 因為你也不想每頁都加HandleUnknownAction這段code吧...

執行結果就會導回那個Controller的Index 啦

如果有任何問題或者有不懂 或者我的文章有問題

請留言一下! 謝謝各位不吝嗇指教