带有剃刀页面的“ .NET输入”无效

时间:2018-12-05 11:26:57

标签: jquery asp.net post asp.net-web-api asp.net-core

任何人都可以提供帮助,当我在邮递员中使用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 :(得分:1)

我遇到了这个问题,对我没有任何帮助,直到我意识到我在Postman中选择了“文本”而不​​是“ JSON”,见下图:

enter image description here

更改后,我得到了正确的结果。

答案 1 :(得分:0)

如果使用[ApiController],则模型验证错误将自动触发HTTP 400响应。 您可以通过将SuppressModelStateInvalidFilter属性设置为true来禁用默认行为。请参见文档here

在邮递员中,我使用原始json发布模型数据,如下所示。

enter image description here

在控制器中,使用[FromBody]

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

在视图中,您需要传递json数据,您的项目类似于

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

答案 2 :(得分:0)

如@Ralpharama所述,将主体类型设置为JSON。

类似地,我将标头Content-type添加到application / json。