如果在控制器中找不到任何操作,MVC路由到索引?

时间:2015-07-20 13:50:47

标签: c# asp.net-mvc asp.net-mvc-routing

我的应用程序中有一个多页表单,因此,每个方法都会发布到下一个表单。除非您尝试访问使用[HttpPost]修饰的方法的网址,否则此方法无效。

有没有办法可以将此特定控制器中的所有404请求路由到Index方法?

1 个答案:

答案 0 :(得分:1)

我会将此作为答案发布,因为我无法将其添加为评论

看一下这个link,它可能对你有帮助

您可以在OnActionExecuting中捕获错误,并在那里进行重定向

也如答案中此page中所述,您可以处理Controller.OnException

public class BaseController: Controller
{
    protected override void OnException(ExceptionContext filterContext)
    {
        // Bail if we can't do anything; app will crash.
        if (filterContext == null)
            return;
            // since we're handling this, log to elmah

        var ex = filterContext.Exception ?? new Exception("No further information exists.");
        LogException(ex);

        filterContext.ExceptionHandled = true;
        var data = new ErrorPresentation
            {
                ErrorMessage = HttpUtility.HtmlEncode(ex.Message),
                TheException = ex,
                ShowMessage = !(filterContext.Exception == null),
                ShowLink = false
            };
        filterContext.Result = View("Index", data); // to redirect to the index page
    }
}

在此之后,您可以让所有控制器从BaseController

进入