Blazor Post и ответ C # - PullRequest
       80

Blazor Post и ответ C #

2 голосов
/ 19 марта 2019

При публикации сообщений от клиента к серверу в веб-приложении 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 Ответ

3 голосов
/ 19 марта 2019

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

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

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

...