2

这应该是一项超级简单的任务 - 从基本控制器重定向。这是一个示例性参考,但不包括我遇到的错误: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");
4

0 回答 0