ASP.NET Core MVC - неверный ввод из формы в действие контроллера - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть HomeController, который возвращает представление ... В моем представлении я отправляю форму, которая обрабатывается ServicesController и действием SubmitDestination. (ошибка / проблема указаны внизу)

HomeController

public class HomeController : Controller
{
    [ActionName("Index")]
    public IActionResult Index()
    {
        return View();
    }
}

Просмотр

@model ScheduleService.Models.Departure

<form asp-controller="Services" asp-action="SubmitDestination" method="post">
    Departure time: <input asp-for="DepartureTime"/>
    Number: <input asp-for="Number"/>
    Destination<input asp-for="Destination"/>
    <button type="submit">Submit</button>
</form>

ServicesController

[Route("api/[controller]")]
[ApiController]
public class ServicesController : ControllerBase
{
    [HttpPost]
    public Departure SubmitDestination(Departure departure)
    {
        Departure _departure = new Departure
        {
            DepartureTime = departure.DepartureTime,
            Number = departure.Number,
            Destination = departure.Destination
        };

        _db.DepartureDB.Add(_departure);
        _db.SaveChanges();

        return _db.DepartureDB.LastOrDefault();
    }
}

ПРОБЛЕМА: Когда я отправляю форму, это ответ, который возвращается в браузере:

{"":["The input was not valid."]}

Может кто-нибудь определить, почему мои данные неверны?Существуют ли специальные правила для контроллеров API?Спасибо

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Попробуйте использовать атрибут [FromForm]:

public Departure SubmitDestination([FromForm]Departure departure)

Это указывает связующему модели читать данные из x-www-urlencoded

0 голосов
/ 24 ноября 2018

Как отметил @Nkosi в комментариях, API-контроллер - это исключение Json, но я пытаюсь передать данные из формы (которая не является Json).Я не нашел решения, но это была проблема

...