2016-11-28 16 views
0

どのようにして複雑なオブジェクトにバインドするルートデータと本文を調べるにはasp.net webapiを取得できますか?次のルート「API /製品/ {[商品} /メーカー/ {manufacturerId}」私の制御方法はFluentvalidationを使用したWebAPIとモデルバインディング

public IHttpActionResult Create(CreateProductManufacturerModel 
       createProductManufacturerModel) 

と私のようであるので、私は、商品コード及びmanufacturerIdモデルにバインドする必要を使用

モデルは私が私の方法は以下の通りであることを変更することができます知っているが、私は全体createproductmanufacturermodelを検証するためにfluentvalidationを使用しています

public class CreateProductManufacturerModel 
    { 
     public int ProductId { get; set; } 
     public int ManufacturerId { get; set; } 
     public bool IsDefault { get; set; } 
     public string ManufacturerCode { get; set; } 
     public string Description { get; set; } 
    } 

で、これは自動的に行われます(http://www.justinsaraceno.com/2014/07/fluentvalidation-with-webapi2/ see-)。したがって、productIdとmanufacturerIdはゼロとして設定されているため、正しく検証されません。

public IHttpActionResult Create(int productId, int manufacturerId, CreateProductManufacturerModel 
       createProductManufacturerModel) 

私はモデルバインダーを試してみましたが、その後は自動的に流動性検証を起動しません。これは問題ではないが、投稿されるボディがjson形式であるかどうかは不明です。

ありがとうございます。

public IHttpActionResult Create([FromBody]CreateProductManufacturerModel 
      createProductManufacturerModel){} 

、その後、あなたが必要とする2つの値の検証:createProductManufacturerModel.ProductIdとcreateProductManufacturerModel.ManufacturerIdを

ポール

+0

jsonデータ内の他の値を使って 'createproductmanufacturermodel'にproductIdとmanufacturerIdを追加できないのはなぜですか? – user3014311

+0

データは2回提供されるので、気になるのですが、 – phooey

答えて

1
  1. 継承System.Web.Http.Filters.ActionFilterAttributeactionContext.ActionArguments
  2. 検証を使用し、作成した新しい属性を使用して、アクションを飾るプロパティ
  3. をモデル化するために、ルーティングデータを割り当てるactionContext.RequestContext.RouteData.Values
  4. 抽出モデルを使用して
  5. オーバーライドOnActionExecuting()
  6. 抽出ルーティングデータ。

具体的ではない場合は、反射を使用して、パラメータデータにルーティングデータを割り当てることができます。

+0

Dev Moviitありがとう - 完璧に働いた – phooey

0

は、あなたの行動の署名があることを変更することはできますか?

+0

私が言及しているproductId、manufacturerIdおよびcreateProductManufacturerModelのメソッドを現在使用しています。私は現在、FluentValidationが自動的に検証を実行しています。私は2つのバリデーションを持っています:( – phooey

関連する問題