2

我正在将一个数组从我的 jquery 传递到控制器。我在jquery中有以下功能

function UpdateWeeklySalesReport_Clicked(AccName,HighComm) {
  alert("function called");
  var isChecked = $('table#HighlightsArea input#SelectHighlights').is(':checked');
  alert('' + isChecked);
  var HighlightsArea = [];
  var count = $('table#HighlightsArea input[type=checkbox]:checked').length;
  alert(''+count);
  if (isChecked)
  {

    for(i=0;i=count;i++)
    {
      var row = $(this).closest('tr');
      var AccName=row.find('td:nth-child(2)').text();
      var HighComm=row.find('td:nth-child(3)').text();
      HighlightsArea[0][AccountName] ;AccName;
      HighlightsArea[0][HighlightsComments] ;HighComm;
      HighlightsArea.push({ AccountName: AccName, HighlightsComments: HighComm });    
    }
  }

  $('[name="SelectHighlights"]:checked').each(function() {
    var row = $(this).closest('tr');                                
    var item = {
        AccountName: row.find('td:nth-child(2)').text(),
        HighlightsComments: row.find('td:nth-child(3)').text()
    };

    HighlightsArea.push(item);
  });

  //HighlightsArea.push({ AccountName: AccName, HighlightsComments: HighComm });

  GetPartialView(
    GetRootPath() + "/WeeklySales/FianlDraft",    //URL
    JSON.stringify(HighlightsArea), //Data:  
    WeeklySalesSucceeded  //Success
  );

  var from = $('#FromDate').text();
  //alert('' + from);
  var to = $('#ToDate').text();
  //var row = $('#HighlightsArea tr').filter(':has(:checkbox:checked)').find('td').text();
  //alert('row'+row);
  $('#FinalFromDate').html(from);
  $('#FianlToDate').html(to);
  //$('#HighlightsArea').

  $('#FianlDraftTabHeader').removeClass('HideThis');
  $('#enclosure').tabs('select', 3);
}

在我的控制器中,我需要处理数组以将数组传递给 web 服务。

4

1 回答 1

0

您的方法控制器方法接收什么?您的方法控制器是否响应 Post 动词,似乎您的 ajax 调用正在尝试使用“GET”调用您的控制器。Get 方法通过 URL 传递数据。因此,如果您要发送一个数组,我几乎不建议在您的 ajax 方法上使用“POST”。您仍然可以在您的方法中返回要呈现给客户端的部分视图。这里有一些例子:

public Class MyCustomList 
{
   //Class to wrap the array
   public string[] ArrayProp;
}

你的控制器方法

[HttpPost]
public ActionResult GetView(MyCustomList list)
{
   //handle the list
   return PartialView("MyPartialView");
} 

你的 javascript

var listToSend = {};
listToSend.ArrayProp = ["hello", "world"]; //dummy Data
$.ajax({
   url: "/Controller/GetView",
   data: JSON.stringify(listToSend),
   contentType: "application/json; charset=utf-8",
   dataType: 'html', 
   type: 'POST',
   sucess: function (data) {
       //data should be your view html
   },
   error: ErrorHandler 
});
于 2013-06-20T21:56:32.477 回答