若是ActionInvoker找不到對應的action,默認會運行contorller類的HandleUnknownAction。而HandleUnknownAction會響應默認HTTP 404asp.net
在 asp.net MVC 裏面 全部的controller 默認都繼承於 System.Web.Mvc.Controller這個類,因爲在System.Web.Mvc.Controller裏HandleUnknownAction被標註了virtual ,因此 這個方法是能夠替換的。ide
即咱們能夠本身重寫HandleUnknownActionspa
using mytest2.DBContext; using mytest2.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace mytest2.Controllers { public class guestsController : Controller { // // GET: /guests/ public ActionResult Guest() { mytestContext db = new mytestContext(); guests guest = db.guests.FirstOrDefault(); return View(guest); } [HttpPost] public ActionResult Guest(guests guests) { if(ModelState.IsValid) { return Content("success"); } else { if(string.IsNullOrEmpty(guests.name)) { ModelState.AddModelError("name","姓名不能爲空"); } } return View(); } protected override void HandleUnknownAction(string actionName) { Response.Redirect("https://www.baidu.com/"); } } }
這樣 就在咱們找不到action的時候 跳轉到百度去.net