web-dev-qa-db-ja.com

どのようにしてint配列をajaxからc#mvcに送信できますか?

$ .ajaxからc#mvcにint配列を送信するにはどうすればよいですか?

22
Anton Lyhin
$.ajax({
          url: <Url of the action>,
          type: "POST",
          data: JSON.stringify([1,2,3]),
          dataType: "json",
          contentType: 'application/json; charset=utf-8'
});

とアクションで。

public ActionResult ReceiveIntArray(int[] ints)
{
   ...
}

mvcはjsonを自動的に解析する必要があります。

チェックアウト この質問。

37
Daniel

この質問 から解決策を試してください:

Getを呼び出す前に、traditionalプロパティをtrueに設定します。例:

jQuery.ajaxSettings.traditional = true

$.get('/controller/MyAction', 
    { vals: arrayOfValues }, 
    function (data) {
      ...
    }
2
VMAtm

最も簡単な方法は、GETリクエストの引数としてintの区切られた(カンマの可能性がある)文字列リストを送信し、Sting.Split()を使用してC#MVCレシーバーでそれらを解析することです。

したがって、たとえば$.get("/path-to/receiver/", { myArray: myArray.toString() } );

次に、サーバーで次を使用します

string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')

値を文字列配列に抽出し、次にInt32.TryParse最後に整数の配列を取得します。

jQuery GET構文
JS配列toString()構文

1
Ben Parsons

私がやっている方法は、単純なinput:hidden要素

<input type="hidden" name="elements" value='@String.Join(",", ViewBag.MyArray)' />

また、JavaScriptコードでは文字列として渡します。

$.ajax({
   type: "POST",
   url: '/Controller/Method',
   data:
      {
          recipients: $("input[name=elements]").val()
      },
      traditional: true,
      success: updateSelected
});

そして最後に、次のような要素をSplitします。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
    IList<long> selected = elements.Split<long>(',');
    ...
}
1
MonkeyCoder

この解決策を試してください:

var Array = [10, 20, 30];

$.ajax({
    type: "Post",
    datatype: "Json",
    url: <Url of the action>,
    data: JSON.stringify(Array),
    contentType: 'application/json; charset=utf-8',

});
0
Hero