簡體   English   中英

Net Core 2.1 Ajax發布到控制器

[英]Net Core 2.1 Ajax Post to Controller

我已經在這上面拉了一段時間了,只是看不到我在做什么錯。

我想將SWAL對話框中的一系列字段發布到我的控制器上,但是對我而言,它根本不會,甚至不會調用Post方法。 收到的錯誤只是400錯誤代碼。

var issue = JSON.stringify(this.swalForm);
        $.ajax({
            type: "POST",
            url: "../api/Issues",
            contentType: "application/json; charset=utf-8",
            beforeSend: function (xhr) {
                xhr.setRequestHeader("RequestVerificationToken",
                    $('input:hidden[name="__RequestVerificationToken"]').val());
            },
            dataType: "json",
            data: issue,
            error: function (xhr) {
                alert('Error: ' + xhr.statusText);
            },
            success: function (msg) {
                console.log(msg.result);
            }
        });

那是我的AJAX電話

[HttpPost]
    public async Task<IActionResult> PostIssue([FromBody] Issue issue)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        _context.Issue.Add(issue);
        await _context.SaveChangesAsync();

        return CreatedAtAction("GetIssue", new { id = issue.Id }, issue);
    }

這是我控制器中的Post方法

public partial class Issue
{
    public Issue()
    {
        Document = new HashSet<Document>();
        IssueMember = new HashSet<IssueMember>();
    }

    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public DateTime? DueDate { get; set; }
    public int CategoryId { get; set; }
    public int StatusId { get; set; }
    public int? PriorityId { get; set; }
    public int ProjectId { get; set; }
    public string Location { get; set; }
    public int TeamId { get; set; }
    public DateTime CreatedDate { get; set; }
    public int CreatedById { get; set; }
    public DateTime? ModifiedDate { get; set; }
    public int? ModifiedById { get; set; }
    public bool Active { get; set; }

    public Category Category { get; set; }
    public User CreatedBy { get; set; }
    public User ModifiedBy { get; set; }
    public Priority Priority { get; set; }
    public Project Project { get; set; }
    public Status Status { get; set; }
    public Team Team { get; set; }
    public ICollection<Document> Document { get; set; }
    public ICollection<IssueMember> IssueMember { get; set; }
}

模型看起來像什么

{"Title":"Ajax Issue","Description":"Made with ajax","DueDate":"2018-08-21","CategoryId":"3","StatusId":"2","PriorityId":"3","ProjectId":"1","Location":"Home","TeamId":"1","CreatedDate":"2018-08-21","CreatedById":"1","ModifiedDate":"2018-08-21","ModifiedById":"1","Active":"Active"}

最后,有效載荷在郵政上的樣子

弄清楚了!! SMH ...

Active是我的控制器中的布爾變量,但在選中時會向其傳遞字符串“ Active”。 JSON與模型不匹配,因此沒有對api方法的調用。

檢查您的有效載荷,並確保它與您的模型人員匹配!

JavaScript代碼似乎還可以。 第一次嘗試使用fiddler或postman調試Web api,然后您將從PostIssue()方法(而不是500)中獲得准確的錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM