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

如果ActionInvoker找不到对应的action,默认会运行contorller类的HandleUnknownAction。而HandleUnknownAction会响应默认HTTP 404114218_ioNt_2494395.png

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

114846_fBEl_2494395.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值