Blazor Post и ответ C#

Возникла проблема с отправкой сообщения с клиента на сервер в веб-приложении Blazor на стороне сервера.

Я создал два простых класса в общей библиотеке:

public class CommandRequest
{
    public int RequestNumber { get; set; }
}

public class CommandResponse
{
    public int ResponseNumber { get; set; }
}

Мой код на стороне клиента:

@if (response == null)
{
    <p>Loading...</p>
}
else
{
    <p>@response.ResponseNumber</p>
}

@functions {
    CommandResponse response;

    protected override async Task OnInitAsync()
    {
        var request = new CommandRequest() {RequestNumber = 3};
        response = await Http.SendJsonAsync<CommandResponse>(HttpMethod.Post,"api/SampleData/ProcessRequest", request);
    }
}

Мой обработчик запросов на стороне сервера:

    [HttpPost("[action]")]
    public CommandResponse ProcessRequest(CommandRequest request)
    {
        return new CommandResponse() { ResponseNumber = request.RequestNumber * 2 };
    }

Когда я отлаживаю это, методу ProcessRequest всегда передается пустой объект, request.RequestNumber равен 0. Я новичок в ASP.NET и Blazor, что я делаю не так?

1 ответ

Добавление атрибута [FromBody] к параметру CommandRequest решило мою проблему:

    [HttpPost("[action]")]
    public CommandResponse ProcessRequest([FromBody] CommandRequest request)
    {
        return new CommandResponse() { ResponseNumber = request.RequestNumber * 2 };
    }

Ссылка здесь: Какова функция атрибута [FromBody] в C#?

Другие вопросы по тегам