0

我有我的 api,它有一个如下所示的 post 方法:

// 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 Bad Request响应。如果我在我的 api 方法中放置一个断点,我会发现Name为空。这是我的收藏模型:

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; }
}

现在,我看过这篇文章:

使用 jquery 将 frombody 参数发布到 web api

它告诉我我需要用一个空键发送我的参数,但我不能用我的Collection做到这一点。

有谁知道如何解决这个问题?或者也许是更好的方法?

任何帮助将不胜感激。

/r3plica

4

1 回答 1

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);
                    }
                });
于 2014-02-18T12:05:02.057 回答