0

私はベースリクエストタイプを持っています..

クラス RequestBase

{
   public string inputId;
   public string derivedid;
}

および継承する型..

class RequestA : RequestBase
{
   public string name;
}

class RequestB : RequestBase
{
   public string color;
}

私は webapi サービスを持っています。いくつかのアクションは RequestA の入力パラメーターを受け取り、いくつかは RequestB を受け取ります

[HttpPost]
 [MyFilter]
 [ActionName("Process1")]
  public HttpResponseMessage Process1(RequestA request)
  {  
      //do something with request.derivedId
  }

 [HttpPost]
 [MyFilter]
 [ActionName("Process2")]
  public HttpResponseMessage Process2(RequestB request)
  {  
      //do something with request.derivedId
  }

リクエストからinputIdを取得し、派生IDを生成するactionfilterがあります

 public override void OnActionExecuting(HttpActionContext actionContext)
    {
        RequestBase request = (RequestBase)actionContext.ActionArguments["request"];
        string inputId = request.inputId;

        string derivedId = inputId + "123";
        // ?? somehow inject derivedId back into the actionContext so that my controller methods can access?
    }

上記のコメントにあるように、derivedId フィールドにデータを入力し、コントローラー メソッドからアクセスできるようにしたいと考えています。

前もって感謝します

4

1 に答える 1

0

このスレッドで既に説明されているこの問題には、いくつかの解決策があります。そのうちの 1 つが適しているはずです。

カスタム アクション フィルターからアクションへの ASP.NET MVC Pass オブジェクト

于 2013-01-25T20:06:06.303 に答える