ASP.NET MVC 5 Web API不接受来自MVC ASP.NET Core解决方案的POST模型

问题描述 投票:1回答:2

我有两个解决方案,一个是MVC5 Web应用程序,另一个是MVC核心2.2 Web应用程序,充当基本Web表单。

我试图将webform数据(使用ViewModel)发布到MVC5 Web应用程序API。

代码

MVC5 web app / api上的POST方法

// POST
[HttpPost]
public IHttpActionResult Post([FromBody] WebFormDataVM personData)
{
    // logic here
}

MVC核心webform(发布到上面)

[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
    var path = "api/WebForm/Post";
    var url = new Uri("http://localhost:60291/");
    var client = new HttpClient();
    client.BaseAddress = url;

    var response = await client.PostAsJsonAsync(path, personData);

    return RedirectToAction("Index");
}

问题

当发布viewmodel时,POST方法API参数(WebformDataVM personData)始终是null

我尝试了完全相同的设置,但使用MVC5项目/解决方案而不是核心,它的工作没有失败。

我试过的

发布字符串而不是视图模型对象 从.net核心项目中删除HTTPS(通过项目选项)

任何帮助将不胜感激。

c# asp.net-mvc asp.net-web-api asp.net-core asp.net-core-mvc
2个回答
0
投票

你应该将你的对象序列化为json

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var url ="yourUrl" // http://localhost:60291/api/WebForm/Post
            var model=yourObject; //PersonVM  
            HttpResponseMessage response = await client.PostAsync(url, new StringContent(JsonConvert.SerializeObject(yourObject),Encoding.UTF8, "application/json"));

        }

0
投票

请尝试使用此解决方案

[HttpPost]
public async Task<ActionResult> Create(PersonVM personData)
{
 using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:60291/api/WebForm/Post");

                var response = await client.PostAsJsonAsync("personData", personData);
                return RedirectToAction("Index");

            }

}



   [HttpPost]
    public IHttpActionResult  Post(WebFormDataVM personData)
        {
           // code
        }
© www.soinside.com 2019 - 2024. All rights reserved.