2014-02-18 62 views
0

工作,我有我的API,它有一個POST方法,看起來像這樣:與網頁API和FromBody

// POST api/collections 
public HttpResponseMessage Post([FromBody]Collection model) 
{ 
    if (!ModelState.IsValid) 
     return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); 

    using (var uow = new UnitOfWork<SkipstoneContext>()) 
    { 
     var service = new CollectionService(uow, User.Identity.GetUserId()); 

     service.Save(model); 
     uow.SaveChanges(); 

     return Request.CreateResponse(HttpStatusCode.OK, model); 
    } 
} 

,我做這個稱呼它:

var data = '{ "Id": ' + id + ', "Name": "' + $('#Name').val() + '", "Description": "' + $('#Description').val() + '" }'; 
$.post(form.attr("action"), data); 

當我做到這一點,我收到一個400錯誤請求響應。如果我在我的api方法中放置斷點,我發現名稱爲空。 下面是我收集的模型:

public partial class Collection 
{ 
    public int Id { get; set; } 
    public string CreatedById { get; set; } 
    [Required] public string Name { get; set; } 
    public string Description { get; set; } 
    public System.DateTime DateCreated { get; set; } 
    public string ModifiedById { get; set; } 
    public Nullable<System.DateTime> DateModified { get; set; } 

    public User CreatedBy { get; set; } 
    public User ModifiedBy { get; set; } 
    public ICollection<Asset> Assets { get; set; } 
} 

現在,我已經看過這篇文章:

Using jquery to post frombody parameters to web api

,它告訴我,我需要一個空鍵發送我的參數,但我我的Collection無法真正做到這一點。

有誰知道如何解決這個問題?或者更好的方法?

任何幫助將不勝感激。

/r3plica

回答

1

嘗試使用jQuery.ajax()方法就是這樣,這應該工作: -

  var myData = { 
       'Id': id, 
       'Name': $('#Name').val(), 
       'Description': $('#Description').val() 
       }; 

      $.ajax({ 
        type: "POST", 
        dataType: "json", 
        url: url, 
        data: myData, 
        success: function (data) { 
         alert(data); 
        } 
       }); 
+0

謝謝你,那工作。但是不確定爲什麼。 – r3plica