2017-07-21 204 views
0

我有一個簡單的控制器方法應該返回一個JSON結果,但返回null。我需要使用jQuery $.ajax來調用它。我用郵差測試了它,它確實返回null。我不確定我做錯了什麼。ASP.NET Core Post操作返回null

我使用下面的JSON數據與郵差測試,它返回null:

{ "id": 2 } 

這裏是控制器方法:

// Post: Contact 
[HttpPost, ActionName("GetContact")] 
public JsonResult GetContactPost([FromBody] long id) 
{ 
    var contact = _context.Contact.SingleOrDefault(m => m.ContactId == id); 
    return Json(contact); 
} 

在我的應用我使用下面的JavaScript,它返回null:

function GetContact(id) { 
    $.ajax({ 
     type: "POST", 
     url: "@Url.Action("GetContact","Contacts")", 
     data: { id: id }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 
      alert("id: " + id + " result: " + result); 
     }, 
     failure: function (response) { 
      alert(response.d); 
     } 
    }); 
} 
+1

你可以試試'data:JSON.stringify({id:id})'? – Win

+0

[Asp.Net Core:json post int type可能重複始終爲0](https://stackoverflow.com/questions/45174143/asp-net-core-json-post-int-type-is-always-0 ) – Set

回答

0

我想通了。該參數必須是模型或視圖模型對象。

// Post: Contact 
    [HttpPost, ActionName("GetContact")] 
    public JsonResult GetContactPost([FromBody] ContactVM findContact) 
    { 
     var contact = _context.Contact.SingleOrDefault(m => m.ContactId == findContact.Id); 
     return Json(contact); 
    }