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

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

如果ActionInvoker找不到对应的action,默认会运行contorller类的HandleUnknownAction。而HandleUnknownAction会响应默认HTTP 404ASP.NET MVC 之controller 找不到action 的处理方式_第1张图片

在 asp.net MVC 里面 所有的controller 默认都继承于  System.Web.Mvc.Controller这个类,由于在System.Web.Mvc.Controller里HandleUnknownAction被标注了virtual ,所以 这个方法是可以替换的。

即我们可以自己重写HandleUnknownAction

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的时候   跳转到百度去

ASP.NET MVC 之controller 找不到action 的处理方式_第2张图片

转载于:https://my.oschina.net/u/2494395/blog/1555336

你可能感兴趣的:(ASP.NET MVC 之controller 找不到action 的处理方式)