2017-08-03 9 views
0

モデルをパラメータとして使用して値を渡したいと思います。 これはこれはこれは私のコントローラコードパラメータのモデル値を渡す方法

[HttpGet] 
[Route("api/Conversion/Currency")] 
public double Currency(ConversionModel c) 
{ 
    return c.value; 
} 

ある

public class ConversionModel 
{ 
    public double value { get; set; } 
    public int qty { get; set; } 
    public double result { get; set; } 
    public string from { get; set; } 
    public string to { get; set; } 
} 

私のModelクラスで基本的にMVCのWeb APIアプリ

ですそして、私のurlは

です

http://localhost:5267/api/Conversion/Currency?value=123

しかし、私のオブジェクトのインスタンスに設定されていないエラー

オブジェクト参照を示しています。

+0

あなたは 'NullReferenceException'が何であるかを知っていますか? – mason

+0

この通貨()アクションを呼び出すと、コンバージョンモデルのデータが送信されますか? – hasan

+0

@hsnbl私はURLから渡された123を返したかった – Ahmed

答えて

0

あなたは整数値を提供しているだけで、ConversionModelに変換することはできません。

あなたはポスト複雑なオブジェクトのために、より適している

[HttpPost] 
public double Currency([FromBody]ConversionModel c) 

使用することができます。

また、値を別々の取得パラメータとして渡して、メソッド本体にConversionModelを作成します。

[FromUri]でgetを使用してください。これは依然としてすべての個々のパラメータ値を供給することを必要とする。 (hereを参照)

個々の値のコレクションを渡すことは少し壊れやすい/不器用です、私はポストを使用することをお勧めします。それに加えて、単純に二重の値を返す場合は、すべての値とクラスのインスタンスが必要であるとは考えにくいので、postが最も適切である可能性があります。

+0

を使ってみることができますか?モデルは整数です。 – Ahmed

+0

'value'、つまり整数だけを渡す場合は、パラメータを整数として宣言します。 –

0

クエリ文字列にオブジェクトを渡すことはできません。 Routeアノテーションにすべてのパラメータを記述する必要があります。あなたのアクションで

[Route("api/Conversion/Currency/{value}/{qty}/{result}/{from}/{to}")] 

そして:

public double Currency(double value, int qty, double result, string from, string to) { 
    var conversionModel = new ConversionModel(); 
    conversionModel.value = value; 
    conversionModel.qty = qty; 
    conversionModel.result = result; 
    conversionModel.from = from; 
    conversionModel.to = to; 

    // Rest of your code. 
} 
関連する問題