如何在参数中传递模型值

时间:2017-08-03 19:04:20

标签: asp.net asp.net-mvc

我想使用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

但是向我显示错误

  

对象引用未设置为对象的实例。

2 个答案:

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