如何在MVC中调用WebAPI方法并将json对象发送给它

时间:2016-07-25 23:27:46

标签: c# json asp.net-mvc asp.net-mvc-4 asp.net-web-api

我需要在MVC控制器中调用此方法,并将UpdateRequest对象作为json格式传递。我怎么能这样做?

    [HttpPost]
    [Route("updatecertificate")]
    public void updatecertificate([FromBody] UpdateRequest certificatereviewed)
    {
       loansRepository.updatecertificate(certificatereviewed.Id, certificatereviewed.CertificateReview);
    }

这是输入类:

 public class UpdateRequest {
    public int Id { get; set; }
    public bool CertificateReview { get; set;}
}

这是我调用和发送单独变量的方式,但现在我喜欢以json格式发送类对象。

  private async Task UpdateFundingCertificateReviewed(int id, bool fundingCertificateReviewed)
    {
        await httpClient.PostAsync(string.Format("{0}/{1}", LoanApiBaseUrlValue, updatecertificate),null);
    }

3 个答案:

答案 0 :(得分:0)

如果要将对象转换为JSON字符串,请参阅以下问题:Turn C# object into a JSON string in .NET 4 var json = new JavaScriptSerializer().Serialize(obj);

这就是你想要的,或者你想知道如何用正文中的JSON对象构造http请求?

答案 1 :(得分:0)

我个人喜欢Newtonsoft.Json来序列化对象。

private async Task UpdateFundingCertificateReviewed
        (int id, bool fundingCertificateReviewed)
{
    using (var client = new HttpClient())
    {
        var url = string.Format("{0}/{1}", LoanApiBaseUrlValue, updatecertificate);
        var updateRequest = new UpdateRequest { Id = 1, CertificateReview = true};
        var data = JsonConvert.SerializeObject(updateRequest);
        await client.PostAsync(url, data);
    }
}

仅供参考:不返回的异步不是一个好习惯。但是,这不是最初的问题。

答案 2 :(得分:0)

你的问题不是很清楚,你期望得到什么结果? 如果您想 POST 使用JSON正文的请求,您可以查看@Win评论, 但是如果你想从Api到MVC项目做出响应,你应该做更多的步骤。 :))