У меня есть два решения: одно - веб-приложение MVC5, а другое - веб-приложение MVC core 2.2, которое выступает в качестве базовой веб-формы.

Я пытаюсь опубликовать данные веб-формы (используя ViewModel) в API веб-приложения MVC5.

Код

Метод POST в веб-приложении MVC5 / api

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

Основная веб-форма MVC (публикация выше)

[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 параметр API метода POST (WebformDataVM personData) всегда равен null.

Я попробовал точно такую же настройку, но использую проект / решение MVC5 вместо ядра, и он работает без сбоев.

Что я пробовал

Размещаем строку вместо представления модели объекта
Удаление HTTPS из основного проекта .net (через параметры проекта)

Любая помощь будет принята с благодарностью.

1
bsod_ 12 Апр 2019 в 15:41

2 ответа

Лучший ответ

Вы должны Srialize свой объект в 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
Mehdi Fattahzadeh 14 Апр 2019 в 09:57

Пожалуйста, попробуйте с этим решением

[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
        }
0
Alaaeddine HFIDHI 12 Апр 2019 в 16:07