从OnActionExecuting重定向 - 匹配的路由不包含“控制器”值

时间:2012-10-25 19:27:45

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

这应该是一个非常简单的任务 - 从基本控制器重定向。这是一个示例性参考,但不包括我遇到的错误:Redirecting from OnActionExecuting in a Base Controller

代码:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (myObject == null) {
        // System.InvalidOperationException: The matched route does not include a 'controller' route value, which is required.            
        filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {{ "controller", "controllerName"}, {"action", "actionName"}});

        // Throws the same exception: 
        filterContext.Result = RedirectToAction("actionName", "controllerName");
    }
}

呈现的网址:

http://localhost/controllerName/actionName?controller=controllerName&action=actionName

调试时,传递给Result属性的重定向对象包含控制器和操作值。在返回的URL中,它也存在。

问题:

为什么抱怨没有控制器价值?除了普通格式之外,为什么它还会在查询字符串中显示控制器和操作值?

更新

// hard coded URL produces the same result. What am I misunderstanding?
filterContext.Result = new RedirectResult("~/Employee/Create");

0 个答案:

没有答案