【问题标题】:How to pass a class as parameter to Web Api如何将类作为参数传递给 Web Api
【发布时间】:2018-07-16 13:18:15
【问题描述】:

我想将一个类作为参数传递给我的 Web API。这是我的代码:

网络 API:

[Route("api/[controller]")]
public class ValuesController : Controller
{

    [HttpPost]
    public string Post(ClusteringObject _cluesteringObject)
    {

        return _cluesteringObject.NumberOfCluster.ToString();
    }


}
public class ClusteringObject
{
    public string Data { get; set; }

    public int NumberOfCluster { get; set; }

}

还有我的测试控制台应用代码:

  class Program
{
    static void Main(string[] args)
    {
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri("http://localhost:57961/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));

        var testData = new ClusteringObject()
        {
            Data = "asdf",
            NumberOfCluster = 1
        };

        HttpResponseMessage response = client.PostAsJsonAsync("api/values", testData).Result;

        string res = "";
        using (HttpContent content = response.Content)
        {
            Task<string> result = content.ReadAsStringAsync();

            res = result.Result;
        }
    }
}

public class ClusteringObject
{
    public string Data { get; set; }

    public int NumberOfCluster { get; set; }

}

我的 post 操作返回 0。看来,我无法将我的对象传递给 Web API,这就是它显示每个属性的默认值的原因。如何将 ClusteringObject 的实例传递给我的 Web API?

【问题讨论】:

  • 首先,你的 Web Api 控制器应该继承自 ApiController。

标签: rest asp.net-web-api asp.net-web-api2 asp.net-core-webapi


【解决方案1】:

PostAsJsonAsync会在请求中将ClusteringObject作为Body发送,建议你试试 FromBody点赞

public string Post([FromBody]ClusteringObject _cluesteringObject)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多