2016-07-19 49 views
1

我在剃刀視圖中有2個數組。第一個複選框複選框,第二個複選框未選中。我可以發送其中一個,但我不知道如何發送他們兩個。這是我的jQuery代碼:如何在MVC.NET中使用jQuery發送多個數組?

$(document).ready(function() { 
    $("#checkAll").click(function() { 
     $(".checkBox").prop('checked', $(this).prop('checked')); 
    }); 
    $("#confrim").click(function() { 
     var selectedIDs = new Array(); 
     var unseletedeIDs = new Array(); 
     $('input:checkbox.checkBox').each(function() { 
      if ($(this).prop('checked')) { 
       selectedIDs.push($(this).val()); 
      } else { 
       unseletedeIDs.push($(this).val()); 
      } 
     }); 
     var options = {}; 
     options.url = "/Parts/ConfrimAll"; 
     options.type = "POST"; 
     options.data = JSON.stringify(selectedIDs); 
     options.contentType = "application/json"; 
     options.dataType = "json"; 
     options.success = function(msg) { 
      alert(msg); 
     }; 
     options.error = function() { 
      alert("Error!"); 
     }; 
     $.ajax(options); 
    }); 
}); 

這是操作:

public ActionResult ConfrimAll(int?[] selectedIDs, int?[] unSelectedIDs) 
    { 
     if (selectedIDs!=null) 
     { 
      foreach (int id in selectedIDs) 
      { 
       Part obj = db.Parts.Find(id); 
       obj.IsOk = true; 
       db.Entry(obj).State = EntityState.Modified; 
      } 
     } 
     if (unSelectedIDs!=null) 
     { 
      foreach (int id in unSelectedIDs) 
      { 
       Part objs = db.Parts.Find(id); 
       db.Parts.Remove(objs); 
      } 
     } 
     db.SaveChanges(); 
    return Json("yes"); 
} 

回答

0

您可以將這兩個數組作爲對象的一部分提供給$.ajax調用的data參數。試試這個:

$("#confrim").click(function() { 
    var data = { 
     SelectedIDs: [], 
     UnSelectedIDs: [], 
    } 
    $('input:checkbox.checkBox').each(function() { 
     data[this.checked ? 'SelectedIDs' : 'UnSelectedIDs'].push(this.value); 
    }); 

    $.ajax({ 
     url: '/Parts/ConfrimAll', 
     type: 'POST', 
     data: data, 
     success: function(msg) { 
      console.log(msg); 
     }, 
     error: function(x, s, e) { 
      console.log('Error!'); 
      console.log(x, s, e); 
     } 
    }); 
}); 

請注意,這是更好的做法是提供一個對象的data參數作爲jQuery將隨後對其進行編碼,爲你所需要的格式,逃避任何特殊字符,因爲它做的。

+0

我試試這不是工作 –

+0

這不是很有用的反饋。它以什麼方式不起作用?您是否更新了'ConfrimAll'(原文如此)方法的屬性,以便ModelBinder能夠工作? –

+0

是您的頃right.this confrimall的方法:public的ActionResult ConfrimAll(INT [] SelectedIDs,INT [] UnSelectedIDs) { 的foreach(在SelectedIDs INT ID) { 部分OBJ = db.Parts.Find(ID) ; obj.IsOk = true; db.Entry(obj).State = EntityState.Modified; } foreach(int in UnSelectedIDs) { Part objs = db.Parts.Find(id); db.Parts.Remove(objs); } db.SaveChanges(); return Json(「yes」); } –

1

你試過嗎?

JSON.stringify({ selectedIDs: selectedIDs, unseletedeIDs: unseletedeIDs }); 

你應該有兩個參數中充滿了這種行動selectedIDsunseletedeIDs

+0

是沒有工作 –

相關問題