0

次のようなpostメソッドを持つAPIがあります。

// 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が nullであることがわかります。これが私のコレクションモデルです:

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