Контроллер получает значения по умолчанию на POST - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь сделать очень простой веб-сервис с использованием. NET Core 3.1 в OS X с использованием Visual Studio for Ma c.

Я запустил проект шаблона веб-приложения и после этого включил простой контроллер.

Чтобы включить контроллер, я добавил в Startup.cs следующие строки:

     app.UseEndpoints(endpoints =>
             {
                 endpoints.MapRazorPages();
                 endpoints.MapControllers(); //This
             });

и

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddControllers(); //and this

        }

Итак, мой контроллер выглядит так :

    [Route("api/[controller]")]
    public class ValuesController : Controller
    {

        [HttpPost("test")]
        public void Read(TestEntityModel tem)
        {
            Console.WriteLine(tem.txt);
        }

Я отлаживаю то, что прибывает в метод Read (), но объект tem все время выглядит пустым.

Класс TestEntityModel выглядит следующим образом:

    public class TestEntityModel
    {
        public string txt { get; set; }
        public float number { get; set; }
    }

Я вызываю этот метод со следующим AJAX кодом:

    function send() {
        var TestEntityModel = new Object();
        TestEntityModel.txt = "hola";
        TestEntityModel.number = 7;
        $.ajax({
            url: '/api/values/test',
            type: 'POST',
            contentType: "application/json",
            dataType: 'json',
            data: TestEntityModel,
            success: function (data, textStatus, xhr) {
                console.log(data);
            },
            error: function (xhr, textStatus, errorThrown) {
                console.log('Error in Operation');
            }
        });


    }

Но не знаю, что происходит.

Кто-нибудь с той же проблемой?

1 Ответ

1 голос
/ 25 апреля 2020

Наследование от APICONTROLLER и добавление атрибута [FromBody] должно сделать это. Если нет, уточните у fiddler, как ваш запрос отправляет данные. Я также хотел бы подтвердить, что в базовом приложении net тип носителя по умолчанию отформатирован как json, я думаю, что это так, но подтвердите его.

public ActionResult<Pet> Create([FromBody] Pet pet)

Также посмотрите эту документацию https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-3.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...