«Неправильный ввод» .NET Core Web API с Razor Pages - PullRequest
0 голосов
/ 05 декабря 2018

Любой может помочь, пожалуйста, когда я использую метод post в почтальоне, я получаю только «Ввод был неверным».Пожалуйста, помогите, я потратил слишком много времени на это !!!

Контроллер:

[HttpPost]
public IActionResult Create(M05PurchaseAgreement item)
{
    _context.M05PurchaseAgreement.Add(item);
    _context.SaveChanges();

    return CreatedAtRoute("GetTodo", new { agreementNo = item.AgreementNo }, item);
}

Модель:

public class M05PurchaseAgreement
{
    [Key]
    public string AgreementNo { set; get; }
    public string Status { set; get; }
    public string OrderStatus { set; get; }
    public string AccountStatus { set; get; }
    public string StockID { set; get; }
    public string RegistrationNo { set; get; }
    public string Revision { set; get; }
    public string CalendarPeriod     { set; get; }
    public string PurchaseType { set; get; }
    public DateTime PurchaseDate { set; get; }
    public string PurchaseSalesman { set; get; }
    public decimal PurchasePrice { set; get; }
    public string TaxMethod { set; get; }
    public string PurchaseInvoice { set; get; }
    public string EntryStaff { set; get; }
    public DateTime EntryDate { set; get; }
    public string LastEditStaff { set; get; }
    public DateTime LastEditDate { set; get; }
    public string Notes { set; get; }
    public string BranchCode { set; get; }
    public string Location { set; get; }
}

Редактировать - я использую Jquery

JQuery:

$.ajax({
    type: 'POST',
    url: 'https://localhost:44328/api/m05purchaseagreement',
    accepts: 'application/json',
    contentType: 'application/json',
    data: JSON.stringify(item),
    error: function (jqXHR, textStatus, errorThrown) {
        alert(JSON.stringify(item));
    },
    success: function (result) {
        $('#agreementNo').val('');
    }
});

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Я столкнулся с этим, и у меня ничего не получалось, пока я не понял, что выбрал «текст» вместо «JSON» в Почтальоне, см. Это изображение:

enter image description here

После того, как я изменил это, я получил правильные результаты.

0 голосов
/ 01 марта 2019

Как упоминает @Ralpharama, установите тип тела в JSON.

Аналогично, я добавил заголовок Content-type в application / json.

0 голосов
/ 06 декабря 2018

Если вы используете [ApiController], ошибки проверки модели автоматически вызывают ответ HTTP 400.Вы можете отключить поведение по умолчанию, установив для свойства SuppressModelStateInvalidFilter значение true. См. Документ здесь .

В Postman я публикую данные модели с необработанным json, как показано ниже.

enter image description here

В контроллере используйте [FromBody]

[HttpPost]
public IActionResult Create([FromBody] M05PurchaseAgreement item)

И с учетом этого вам необходимо передать данные JSON, ваш элемент похож на

var item = { "Status": "active", "OrderStatus": "active" };
...