2017-11-01 17 views
0

問題があります。コントローラーのアクションで、コントローラーの引数のすべてのデータ(オブジェクトのプロパティを含む)を受け取るように調整できますか。要求ペイロードからすべてのデータを抽出してコントローラ引数に取得します。C#Asp Net mvc

{exportInfo: {collectionId: 428713, id: "59f9d640fcbfc5540c015f39"}, format: "CSV"} 

3つの合計のプロパティがあります:collectionId、ID、フォーマットは、私はこの情報が送られてきた 何を意味

。私はから内側のプロパティを抽出したいので、私はプロパティとして「exportInfo」をカウントしないこと

私は「collectionId」と 'を持つクラスを作成することができることを知って

public void action (int collectionId, string id, FileFormat format) 
{ //FileFormat is enum 
    ... 
} 

サーバー上のアクションを持っていますid 'プロパティを定義し、アクション宣言で使用します。しかし、別の方法があるかもしれませんか? 私はPOSTリクエストを送信しています 私はASP Net MVCを使用しています5

+0

最初のタグは.netのバージョンです。これはweb apiとMVCとCoreの間で少し違いがあります。私はあなたのデータから、このアクションは投稿であり、それは取得ではないと仮定していますが、あなたがそれを指定していればそれも良いでしょう。最後にあなたの質問に答えるはい、あなたはクラスは必要ありませんが、web-apiは複雑なクラスから複数のパラメータを取得するのに問題があるため、ファイルフォーマットを文字列にすると面白いかもしれません。複雑なクラスですが、モデルバインダーに関連するニュアンスがあります –

+0

johnny 5 FileFormatはEnumでありクラスではありません –

答えて

0

私の推測では、データは変更される可能性がありますが、何らかの理由で引き続きそのデータを取得したいのですが、どのように見えるかわからない。 その後、dynamicオブジェクトで作業することができます。

例えば

//Input: {"val":42} 

    [HttpPost] 
    public dynamic PostDynamic(dynamic value) 
    { 
     return value.val; 
    } 

戻り

42しかし、につながる動的オブジェクトで定義されていないフィールドにアクセスするため、このようなコードを書くときにいつものように、あなたは非常に正確でなければなりませんnullを受け取る。 など。

[HttpPost] 
    public dynamic PostDynamic(dynamic value) 
    { 
     return value.hello; 
    } 

は、我々のvalueオブジェクトにhelloフィールドを持っていない場合はnullを返します。

C#でダイナミックタイプを使用する場合は、数少ないshortcomingsがあります。

その後、this articleをご覧になることをお勧めします。これは、ASP.NETのモデルバインディングについての理解を向上させるはずです。

+0

ありがとうございますが、これは私が意味するものではありません。私は正確なデータセットを持っている、私はそれを問題に記述した。そして、私はこのparamsを実際に稼働させたいのですが、新しいClassを作成せずに、ただ3つのargを並べています。 –

+0

有効なリンクを提供してください。私はそれをクリックしてサイトにアクセスしていません –

+0

@simplygoodああ、私はあなたを持っています:APIメソッドに複数のパラメータを渡したいと思います。 ネイティブWebApiはこのような機能をサポートしていません。この[記事]をご覧ください(https://weblog.west-wind.com/posts/2012/Sep/11/Passing-multiple-simple-POST-Values-to- ASPNET-Web-API)を参照してください。 –

関連する問題