2017-08-03 24 views
0

我想使用模型作爲參數傳遞值。 這是基本的MVC Web API應用程序如何傳遞參數中的模型值

這是我的模型類

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; } 
} 

這是我的控制器代碼

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

我的網址是

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

但正顯示出我的錯誤

對象引用不設置到對象的實例。

+0

你知道'NullReferenceException'是什麼? – mason

+0

當您調用此Currency()操作時,您是否發送了您的轉換模型數據? – hasan

+0

@hsnbl我只想返回123,我通過url – Ahmed

回答

0

您只提供一個整數值,它不能轉換爲ConversionModel。

您可以使用後

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

哪個更適合複雜的對象。

或者將值作爲單獨的get參數傳遞,在方法體中構造一個ConversionModel。

或使用get [FromUri];這仍然需要提供所有的單個參數值。 (請參閱here

傳遞各個值的集合有點脆弱/笨拙,我寧願使用post。除此之外,你不太可能需要所有的值和類的一個實例,如果你只是簡單地返回一個double值,那麼post最可能是合適的。

+0

所以我怎麼能通過值,實際上價值屬性模型是整數。 – Ahmed

+0

如果您只想傳遞一個整數的「值」,則將該參數聲明爲整數。 –

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. 
}