从 javascript 获取 MVC 控制器中的操作参数时出错

Error in getting action parameter in MVC controller from javascript

本文关键字:操作 参数 出错 javascript 获取 MVC 控制器      更新时间:2023-09-26

我需要将值从javascript传递给我的控制器操作。

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

在javascript中,它有一个值。在控制器上,它为空

 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。有什么遗漏吗?

鉴于这个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);
}