我想使用model作为参数传递值。 这基本上就是mvc web api app
这是我的Model类
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 :(得分:0)
您只提供一个整数值,它无法转换为ConversionModel。
您可以使用帖子
[HttpPost]
public double Currency([FromBody]ConversionModel c)
更适合复杂的物体。
或者将值作为单独的get参数传递,在方法体中构造ConversionModel。
或者使用[FromUri]获取;这仍然需要提供所有单独的参数值。 (见here)
传递一系列单个值有点脆弱/笨拙,我宁愿使用post。除此之外,你不太可能需要所有的值和类的实例,如果你只是返回一个double值,那么post很可能是合适的。
答案 1 :(得分: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.
}