0

MVCコントローラーにリストを投稿しようとしています。

コントローラー: // POST api/UserFollows

public HttpResponseMessage PostUserFollows(List<FollowItem> followItemList)
{
   //I'M GETTING NULL IN followItemList
   if(followItemList==null)
   {
      return Request.CreateResponse(HttpStatusCode.BadRequest);
   }
}

出力:

STATUS 400 Bad Request <-- Means I got null in followItemList
TIME 4025 ms
Cache-Control →no-cache
Connection →Close
Content-Length →0
Date →Tue, 29 Jan 2013 09:38:31 GMT
Expires →-1
Pragma →no-cache
Server →ASP.NET Development Server/10.0.0.0
X-AspNet-Version →4.0.30319

FollowItemクラス_

namespace Helpers.SubClasses
{
    public class FollowItem
    {
        public bool action;
        public long FollowsUserId;
    }
}

私はたくさんのリクエストを試しましたが、どれもうまくいきませんでした。私はいつもnullになります!

POSTメソッド:

function postFollowList() {
            $.ajax( {
            url: Request_Url + "api/UserFollows",
            type: 'post',
            data: {
                    {action: true, FollowsUserId: 123456777},
                    {action: true, FollowsUserId: 123456888}
            },
            dataType: 'json',
            success: function( data )
            {
                $('#newmovie').html("OK");
            },
            error: function (jqXHR, textStatus, err) 
            {
                $('#newmovie').html('Error: ' + err);
            }
             });

リクエスト: //JSONとして-私はPOSTMANを使用しています

1.
    [
        {"action":"true","FollowsUserId":"123456777"}
    ]
2.
    [
        {action: true, FollowsUserId: 123456777},
        {action: true, FollowsUserId: 123456888}
    ]
3.
    {[
        {action: true, FollowsUserId: 123456777},
        {action: true, FollowsUserId: 123456888}
    ]}
4.
    {followItemList:[
        {action: true, FollowsUserId: 123456777},
        {action: true, FollowsUserId: 123456888}
    ]}

nullの例:

例

私はもっ​​とたくさん試しました..誰かがこれで私を助けてくれますか?ありがとう!!!

編集: 答えは、application/xml送信する必要があるときにコンテンツタイプで送信したというものでしたapplication/json

4

3 に答える 3

1

JSONが有効ではないようです。おそらくこれを試してください:

[
    {
        "action": true,
        "FollowsUserId": 123456777
    },
    {
        "action": true,
        "FollowsUserId": 123456888
    }
]

JSONの有効性をチェックするための優れたツールはjsonlint.comです。

于 2013-01-29T10:22:35.817 に答える
1

私はこれを試しました-

public class HomeController : Controller
{
    //
    // GET: /Home/

    public ActionResult Index()
    {
        var foo = new List<FollowItem>()
        {
            new FollowItem {action = true, FollowsUserId = 123456777},
            new FollowItem {action = true, FollowsUserId = 123456888}
        };
        return new JsonResult {Data = foo, JsonRequestBehavior = JsonRequestBehavior.AllowGet};
    }

    //
    // POST: /Home/
    public ActionResult Dump(List<FollowItem> followItems)
    {
        Debug.WriteLine(followItems);
        return new HttpStatusCodeResult(200);
    }

}
public class FollowItem
{
    public bool action;
    public long FollowsUserId;
}

そしてこれを投稿してください-

[
  {"action":true,"FollowsUserId":123456777},
  {"action":true,"FollowsUserId":123456888}
]

そして、これは機能します。これが応答の送信方法でもあることに注意してください。

于 2013-01-29T10:25:55.063 に答える
1

変数名をデータに追加してみてください。次のコードを参照してください。

function postFollowList() {
        $.ajax( {
        url: Request_Url + "api/UserFollows",
        type: 'post',
        data: { followItemList: [
            {action: true, FollowsUserId: 123456777},
            {action: true, FollowsUserId: 123456888}
        ]},
        dataType: 'json',
        success: function( data )
        {
            $('#newmovie').html("OK");
        },
        error: function (jqXHR, textStatus, err) 
        {
            $('#newmovie').html('Error: ' + err);
        }
});

編集:多分あなたはそれを投稿する前に配列をシリアル化することを試みることができます:

        data: { followItemList: JSON.stringify([
            {action: true, FollowsUserId: 123456777},
            {action: true, FollowsUserId: 123456888}
        ])},
于 2013-01-29T10:26:39.680 に答える