【问题标题】:Want to pass an object from MVC controller to web api controller想要将对象从 MVC 控制器传递到 Web api 控制器
【发布时间】:2017-06-21 22:38:23
【问题描述】:

这是我的 MVC 控制器代码。

[HttpPost]
public async Task<IActionResult> InsertNewStudentAsync(ViewModel.StudentPersonalDetailsViewModel ob)
{
    StudentModel obj = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://localhost:52494/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        var bodyData = ViewModel.StudentPersonalDetailsViewModel.Translate(ob);

        //HttpContent ob = new HttpContent();
        var response = await client.PostAsync("api/Student/InsertStudent",obj);
    }
    return View();
}

var response = await client.PostAsync("api/Student/InsertStudent",obj);行中

它向我显示 obj 上的错误,显示

错误 CS1503 参数 2:无法从“SMS.Domain.Models.StudentModel”转换为“System.Net.Http.HttpContent”

如何将该对象传递给我的 API 控制器。

【问题讨论】:

    标签: c# asp.net-core-mvc asp.net-core-webapi


    【解决方案1】:

    那是因为它需要一个HttpContent 派生类。

    要么使用PostAsJsonAsync扩展方法

    var response = await client.PostAsJsonAsync("api/Student/InsertStudent",obj);
    

    或自己转换

    var json = JsonConvert.SerializeObject(obj); 
    var content = new StringContent(json, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("api/Student/InsertStudent", content);
    

    这基本上就是扩展方法在幕后所做的事情。

    如果您不想添加其他依赖项,这里是滚动您自己的扩展方法的示例。

    public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient client, string requestUri, T obj) {
        var json = JsonConvert.SerializeObject(obj); 
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        return client.PostAsync(requestUri, content);    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多