将复杂的Javascript数组发送到ASP.NET控制器方法

时间:2015-12-21 21:00:28

标签: javascript c# asp.net arrays json

我有asp.net mvc6控制器方法,我想发送我复杂的javascript数组数据。我用两个方法用json取复杂数组。首先,我尝试了如下方法:

 $(this).append('<span class="loadingspan">Loading</span>');

我尝试的第二种方法。

$('.loadingspan').hide();

我想发送复杂的javascript数组,如下所示:

 public IActionResult TakeComplexArray(IList<ComplexArrayInfoModel> data) 
 {
     return PartialView(data);
 } 

每个对象的类型都是我的模型类类型ComplexArrayInfoModel。每个对象都有此模型类的不同记录。有关此复杂数组的更多详细信息如下所示:

 public IActionResult TakeComplexArray(ComplexArrayInfoModel[] data) 
 {
     return PartialView(data);
 }

我想通过javascript函数将此复杂数据发送到控制器操作,如下所示:

[Object, Object, Object, Object, Object]

我无法发送这个复杂的javascript数组。如何将此复杂数组发送到此控制器操作?同时,当我不使用json.stringify方法时,我无法发送数据。

2 个答案:

答案 0 :(得分:1)

由于将$.ajax调用配置为发送表单数据和实际发送json数据,因此dataType调用格式不正确。要修复的两个选项:

  1. json设置为contentType并设置正确的$.ajax({ url: '@Url.Action("TakeComplexArray")', contentType: "application/json; charset=utf-8", data: JSON.stringify({data: data.complexArray}), type: 'POST', dataType: 'json' });

    $.ajax({
     url: '@Url.Action("TakeComplexArray")',
     data: {data: data.complexArray},
     type: 'POST',
     dataType: 'html'
    });
    
  2. 只需传递非JSON数据:

    $ open http://large-type.com/#YourText
    

答案 1 :(得分:1)

您是否尝试使用Microsoft的MVC.stringify()方法将适当的数据发送到mvc控制器类。您的javascript函数应如下所示:

function SendComplexData(data, row) {
   return $.ajax({
        url: '@Url.Action("TakeComplexArray")',
        /*data.complexArray is showed above schema*/
        data: MVC.stringify({ data: data.complexArray }),
        type: 'POST',
        dataType: 'html',
    });
}

您的控制器类应如下所示:

public IActionResult TakeComplexArray(IList<ComplexArrayInfoModel> data) 
{
   return PartialView(data);
} 

您可以尝试使用此ajax代码将复杂数组发送到mvc6控制器操作方法。

相关问题