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");
    }
}

レンダリングされた URL:

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