ASP. NET Основные пустые параметры по HTTPOST от JavaScript - PullRequest
0 голосов
/ 11 июля 2020

Я создаю ASP. NET Core WepApp, и у меня проблема с отправкой данных с javascript на мой сервер.

HTML:

<button onclick="sendData()">Send Data to the Server</button>

JavaScript:

    function sendData() {

        var xhr = new XMLHttpRequest();
        xhr.open("POST", "/Cockpit/Index", true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.send(JSON.stringify({
            "Test": "value"
        }));
     };

ASP. NET Core

namespace Paragliding.Controllers
{
    public class CockpitController : Controller
    {
        [HttpPost]
        public IActionResult Index(Test test)
        {
            return Json(test);
        }

        public IActionResult Index()
        {
            return View();
        }

    }
}

Class Test

namespace Paragliding.Models
{
    public class Test
    {
        public string TestValue { set; get; }
    }
}

Когда я нажимаю кнопку для отправки данные на сервер я вижу при отладке, он прыгает внутри метода

[HttpPost]
public IActionResult Index(Test test)

, но параметр test всегда пуст.

1 Ответ

0 голосов
/ 11 июля 2020

параметр test всегда пуст

Вы можете попробовать изменить код, как показано ниже.

function sendData() {
    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText);
        }
    };

    xhr.open("POST", "/Cockpit/Index", true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({
        "TestValue": "blabla here"
    }));
 };

Примените атрибут [FromBody] к параметр

[HttpPost]
public IActionResult Index([FromBody]Test test)
{
    return Json(test);
}

Результат теста

введите описание изображения здесь

...