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

相关文章
相关标签/搜索