繁体   English   中英

将jQuery数组发送到MVC控制器

[英]Send jQuery array to MVC Controller

我通过ajax发送数组对象,C#MVC无法理解。 我尝试了几种方法,但没有用。 我究竟做错了什么?

我已经有了并且没有JSON.stringify,并且无法正常工作。 变量teste01接收空值。

对象类别:

public class Teste
{
    public int dataid {get;set;}
    public string datapackage { get; set;}
    public int packageid {get;set;}
}

位指示:

[HandleError]
[AcceptVerbs(HttpVerbs.Get)]
[Authorize]
public JsonResult ListaGenerica(DataTables param, string aController, Teste[] teste01, bool porID = false, string regra = "", int filtroID = 0, string tipo = "")

jQuery函数:

function Controller()
{
    return "EmpresaCarga";
}

function Dados()
{
    var localproducts = [];

    localproducts.push({
            'dataid' : 1, 
            'datapackage' : 'test', 
            'packageid' : 3
        });

    localproducts.push({
            'dataid' : 2, 
            'datapackage' : 'test 01', 
            'packageid' : 4
        });

    return localproducts;
}

JQuery的:

var oTable = $('#listagem').dataTable({
    "bServerSide": true,
    "sAjaxSource": '@Url.Action("ListaGenerica", "Ajax")',
    "fnServerParams": function ( aoData ) {            
        aoData.push( { "name": "filtroID", "value": $("#ClienteID").find('option:selected').val() } );
        aoData.push( { "name": "aController", "value": Controller() } );
        aoData.push( { "name": "teste01", "value": Dados() } );
    },
    "bProcessing": true,
    "sPaginationType": "full_numbers",
    "aoColumns": [
            { "mDataProp": "Carga", "sTitle": "Carga" },
            { "mDataProp": "DtCarga", "sTitle": "DtCarga", "mRender": function (data, type, full) { return dtConvFromJSON(data); } },       
            { "mDataProp": "Empresa", "sTitle": "Empresa" },
            { "mData": null, "bSortable": false, "mRender": function (data, type, row) { return '<a class="btn btn-default btn-xs" href="/Produto/Detalhar/' + row.EmpresaCargaID + '" title="Clique para abrir"><span class="glyphicon glyphicon-edit"></span></a>';}}
        ],
    });

查询字符串参数

sEcho:2
.
.
.
filtroID:
aController:EmpresaCarga
aController:EmpresaCarga
teste01:[{"dataid":1,"datapackage":"test","packageid":3},{"dataid":2,"datapackage":"test 01","packageid":4}]

正如我所评论的,这可能是因为ASP.NET MVC并未为您将查询字符串的JSON部分反序列化为一个对象。 您可以将参数更改为string并自行反序列化(此示例使用JSON.NET):

public JsonResult ListaGenerica(string param, /* etc */)
{
    DataTables dataTables = JsonConvert.DeserializeObject<DataTables>(param);
}

或者,您也可以从DataTables端使用POST

"fnServerData": function (sSource, aoData, fnCallback, oSettings) {
  oSettings.jqXHR = $.ajax( {
    "dataType": 'json',
    "type": "POST",
    "url": sSource,
    "data": aoData,
    "success": fnCallback
  });
}

有关在文档页面上进行服务器端请求的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM