0

JavaScript からコントローラ アクションに値を渡す必要があります。

 $.getJSON('/gallery/PublishImage', { imageid: itemsarray }, function (mydata) {

    });

JavaScript では、値があります。コントローラでは null

 public ActionResult PublishImage(string imageid)
    {
        var mydata = imageid;
        return Json(mydata,JsonRequestBehavior.AllowGet);

    }

これを解決する方法。

私のコード全体は次のとおりです。

function publish() {
    debugger;

    var $trash = $("#trash li");
    var itemsarray = [];


    var lis = document.getElementById("trash").getElementsByTagName("li");
    for (var i = 0; i < lis.length; i++) {
        var item = lis[i].children[0].id;
        itemsarray.push(item);
    }


    $.getJSON('@Url.Action("PublishImage")', { imageids: itemsarray }, function (mydata) {


    });

コントローラーで

public ActionResult PublishImage(string[] imageids)
    {
        var mydata = imageids;
        return Json(mydata,JsonRequestBehavior.AllowGet);

    }

テスト用に文字列を使用しました。ただし、上記のコードでも null が返されます。何か見落としがありますか?

4

1 に答える 1

0

この JavaScript 変数の名前を考えると、これitemsarrayは文字列ではなく、ある種の JavaScript オブジェクト (配列?) であると強く疑われます。これが機能するには、文字列でなければなりません:

var itemsarray = 'foo bar';
$.getJSON('/gallery/PublishImage', { imageid: itemsarray }, function (mydata) {

});

配列を送信したい場合は、次のようにします。

var itemsarray = ['foo', 'bar', 'baz'];
$.getJSON('/gallery/PublishImage', { imageids: itemsarray }, function (mydata) {

});

そしてあなたのコントローラーアクション:

public ActionResult PublishImage(string[] imageids)
{
    var mydata = imageids;
    return Json(mydata, JsonRequestBehavior.AllowGet);
}
于 2012-08-17T05:02:41.027 に答える