【问题标题】:Issues sending selected rows values into a controller MVC将选定的行值发送到控制器 MVC 的问题
【发布时间】:2016-11-14 14:40:44
【问题描述】:

当我单击 id="send" 的按钮时,我正在尝试将选定的行发送到控制器中。问题是,当我尝试使用所选行值发送其他值(在本例中为数字和字符串)时,所选行值正在向控制器发送 null,但控制器中的数字和字符串不为 null参数。

这是我的 javascript 代码,只要我发送选定的行值,它就可以正常工作:

$('#send').click(function () {
            var items = {};
            var grid = $('#grid').data('kendoGrid');
            var selectedElements = grid.select();

            for (var j = 0; j < selectedElements.length; j++) {
                var item = grid.dataItem(selectedElements[j]);
                items['grid[' + j + '].ParecidoCodigo'] = item.ParecidoCodigo;

            }
            $.ajax({
                url: '@Url.Action("Index", "Busqueda")',
                type: "POST",
                async: false,
                data: items,

                success: function (result) {
                    console.log(result);
                }
            })
        })

这是我的控制器方法操作:

public ActionResult Index(MarcaParecido[] grid)
{ ... }

到目前为止一切正常。但是当我尝试发送另一个这样的值时:

$('#send').click(function () {
            var items = {};
            var grid = $('#grid').data('kendoGrid');
            var selectedElements = grid.select();
            var enviarDest = $('#destinatario').val();
            var marca = $('#numMarca').val();

            for (var j = 0; j < selectedElements.length; j++) {
                var item = grid.dataItem(selectedElements[j]);
                items['grid[' + j + '].ParecidoCodigo'] = item.ParecidoCodigo;

            }
            $.ajax({
                url: '@Url.Action("Index", "Busqueda")',
                type: "POST",
                async: false,
                data: { items, marcas: marca, destinatario: enviarDest },

                success: function (result) {
                    console.log(result);
                }
            })
        })

所选行的值向我发送 null,但其他值不为 null

这是我现在的控制器:

public ActionResult Index(MarcaParecido[] grid, string marcas, string destinatario)
{...}

我也尝试过 JSON.stringify 但它不起作用。

【问题讨论】:

    标签: javascript c# jquery asp.net-mvc kendo-grid


    【解决方案1】:

    如果 items 是您要发送到服务器的键/值对的集合,请向其中添加两个附加参数,然后继续向 item 发送 items 对象。 MVC 应该读取“网格”。 items 作为集合中的项目列表(正如您现在所做的那样),并在您指定的变量中查看其他两个参数:

    items["marcas"] = marca;
    items["destinatario"] = enviarDest;
    
    $.ajax({
      .
      .
      data: items
    

    【讨论】:

    • 谢谢,对我帮助很大。
    • 知道为什么没有按照我尝试的方式工作吗?不能这样传递参数吗?
    • 是的,因为您正在创建一个带有键/值对的对象,但是当代码有 data: { items, marcas: marca, destinatario: enviarDest }, 时,这基本上构造了一个 3 对对象,第一个是一个数组(不确定属性名称),因此不能很好地序列化。通过将名称/值对保存在一个对象中,它可以很好地序列化,然后以 MVC 通常处理 POST 请求的方式将所有内容传输到服务器。
    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多