簡體   English   中英

ASP.NET Web API 2-如何過帳?

[英]ASP.NET Web API 2 - how to POST?

我已使用腳手架為ASP.NET中的Web API 2生成Controller類。

我想從瀏覽器發布對象。 這是運行的生成方法:

    // POST: api/MyObjects
    [ResponseType(typeof(MyObject))]
    public async Task<IHttpActionResult> PostMyObject(MyObject myObject)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.MyObjects.Add(myObject);

        try
        {
            await db.SaveChangesAsync();
        }
        catch (DbUpdateException)
        {
            if (MyObjectExists(myObject.Id))
            {
                return Conflict();
            }
            else
            {
                throw;
            }
        }

        return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
    }

我正在嘗試從javascript / jquery調用它:

$.post("http://localhost:2239/api/UrlVisits/5", "=" + "something");

我的問題是,我應該為"something"添加"something"以使其正確序列化? 輸入方法后, myObject是一個有效的對象,所有字段均設置為null。 我不知道該序列化發生在堆棧中的什么地方,所以我不確定如何修改我的post以進行修復。

您需要稍微改變一下結構。

首先,/ 5表示ID為5,這與您的方法所期望的復合對象沒有任何意義。

其次,您無需使用“ =”手動指定任何URL參數化。 如果正確構造對象,jQuery和WebAPI都將為您處理這些部分。 當反序列化復雜對象時,WebAPI 2的功能要比其前身強大得多。 只需發布對象。

$.post("http://localhost:2239/api/UrlVisits", {id:1, name:"test name"});

最后,您可以使用[FromBody]屬性來指定您的對象將被發布在表單主體上。

[ResponseType(typeof(MyObject))]
public async Task<IHttpActionResult> PostMyObject([FromBody]MyObject myObject)

暫無
暫無

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

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