2017-04-21 43 views
0

web apiからasp .net mvc coreに移行しています。ウェブAPIにアクションセレクタがありました.Web APIのurlに "$"記号があれば、特定の方法私たちは以下のApiControllerActionSelectorを使用して、Web APIで達成 この機能は、Web APIで同じことを行うためのコードだった -ASP.Net MVCコアでApiControllerActionSelectorを使用する

public override HttpActionDescriptor SelectAction(HttpControllerContext controllerContext) { 
      string urlDecode = HttpUtility.UrlDecode(
       controllerContext.Request.RequestUri.ToString()); 
      if (urlDecode != null && urlDecode.Contains("$")) { 
       if (controllerContext.Request.Method == HttpMethod.Post) { 
        MethodInfo method = controllerContext.ControllerDescriptor.ControllerType 
         .GetMethod(
          "PostCustomOperation"); 
        return 
         new ReflectedHttpActionDescriptor(
          controllerContext.ControllerDescriptor, method); 
       } 
       if (controllerContext.Request.Method == HttpMethod.Get) { 
        MethodInfo method = controllerContext.ControllerDescriptor.ControllerType 
         .GetMethod(
          "GetCustomOperation"); 
        return 
         new ReflectedHttpActionDescriptor(
          controllerContext.ControllerDescriptor, method); 
       } 
      } 
      HttpActionDescriptor result = base.SelectAction(controllerContext); 
      return result; 
     } 

私は、ASP .NET MVCコアで同じことを行うための同等の方法を見つけることができませんよ、私は実装してみました私たちはコントローラも指定する必要がありますが、それは私には分かりません。 Asp.net MVCコアでこれを達成する方法や、これを行う方法はありませんか?

答えて

0

お望みのものはIActionSelectorです。 ConfigureServices、services.AddSingleton<IActionSelector, CustomActionSelector>()に実装を登録することができます。デフォルト実装はActionSelectorで、カスタム実装でその実装を委任できます。

関連する問題