ASP.NET MVC 之controller 找不到action 的處理方式

若是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

相關文章
相關標籤/搜索