2016-08-03 9 views
0

auf den Controller zu pushen Ich habe ein Webgitter mit vielen Zeilen und jede Zeile hat ein Kontrollkästchen. Wenn ich 10 Zeilen auswähle, kann ich die Daten im Controller auf schieben und die Datenbank aktualisieren. Sobald die ausgewählten Zeilen mehr als 20 sind, passiert nichts. Ich kann nicht Schritt in meine Methode. Gibt es eine Einschränkung, die ich mit Json weitergeben kann? Was denkst du ist falsch?Nicht möglich, große Datenmenge mit json

Hier ist meine jQuery-Code

  $('#MultipleAcctAssignSubmit').click(function() { 

        var routeselected = $('#ddlroutes :selected').val(); 
        var repsselected = $('#ddlreps :selected').val(); 

        var routeselectedText = $('#ddlroutes :selected').text(); 
        var repsselectedText = $('#ddlreps :selected').text();    

        var branchcode = $("#ddlDropDownList option:selected").text(); 
        var values = []; 
        $("#container-grid input[name=CatalogOrderId]:checked").each(function() { 
         row = $(this).closest("tr"); 

         if (routeselected == "") { 
          //routeselected = $(row).find("td div.RouteId").text(); 
          //routeselected = $(".routeId").val(); 
          routeselected = 0;     
         } 

         if (repsselected == "") { 
          //repsselected = $(row).find("td div.primrep").text(); 
          //repsselected = $(".PrimaryRepId").val(); 
          repsselected = 0; 
         } 

         values.push({ 
          CatalogOrderId: $(row).find("input[name=CatalogOrderId]").val(), 
          RouteId: routeselected, 
          Primaryrep: repsselected, 
          Isvalidated: "Assigned" 
         }); 
        }); 
        console.log(values); 

        if (values.length < 1) { 
         ShowDialogBox('Selection of rows', 'No records have been selected. Please select the record(s) you wish to assign.', 'Ok', '', 'GoToAssetList', null); 
         return; 
        } 

        /* Do some stuff with the values collected */    
        var things = JSON.stringify({ 'CatalogSelectedOrders': values }); 

        $.get('@Url.Action("SubmitCatalogOrders", "Home")', { 'values': things, 'strBranchcode': branchcode }, function(result) { 
         $('#scrolltable').html(result); 
        }); 

       }); 

Hier ist meine Methode in der Steuerung ist

   public ActionResult SubmitCatalogOrders(string values, string strBranchcode) 
       { 
        Grabpartialviewdata objcatsubmit = new Grabpartialviewdata(); 
        string stripOutBranchName = string.Empty; 
        stripOutBranchName = strBranchcode.Substring(0, 3); 
        string status = string.Empty; 
        List<Catalogorder> cleanedData = null; 

        try 
        { 
         var stripOffObjectName = JObject.Parse(values)["CatalogSelectedOrders"]; 
         cleanedData = JsonConvert.DeserializeObject<List<Catalogorder>>(stripOffObjectName.ToString()); 
         status = _edmDataService.ProcessWriteAssingedRowsToDb(cleanedData, stripOutBranchName); 
         ViewData["SelectList"] = HttpContext.Session["SelectList"] ?? new List<Int64>(); 

         if (status == "success") 
         { 
          objcatsubmit = _edmDataService.GetPartialViewData(stripOutBranchName); 
         } 

        } 
        catch (Exception ex) 
        { 
         logger.Error(ex); 
        } 

        return PartialView("_Edmcatorderdetails", objcatsubmit); 

       } 

Antwort

2

Ihr Code macht einen GET-Aufruf die $.get Methode. GET-Aufruf sendet Daten über Abfragezeichenfolge und hat eine Einschränkung.

Sie sollten in Erwägung ziehen, einen POST-Aufruf zu verwenden, der Daten im Anfragetext sendet. Sie können dafür die Methode jquery $.post verwenden.

var url="@Url.Action("SubmitCatalogOrders", "Home")"; 
$.post(url, { 'values': things, 'strBranchcode': branchcode }, function(result) { 
     $('#scrolltable').html(result); 
}); 

Auch ich sehe, dass Sie alles als eine einzelne Zeichenfolge Wert senden. Du musst das nicht tun. Sie können ein JavaScript-Objekt senden und Ihr Ansichtsmodell als Parameter verwenden, und das Standardmodellbindermodul kann Ihre geposteten Objekte den Eigenschaften des Ansichtsmodellobjekts zuordnen.

+0

Ich werde das jetzt ausprobieren und auf Sie zurückkommen. Vielen Dank. – user2320476