2016-08-03 16 views
0

私はたくさんの行を持つwebgridを持っており、各行にはチェックボックスがあります。私は10行を選択した場合私は 私のメソッドをコントローラに押して、データベースを更新することができます。選択した行が20以上になると、何も起こりません。私は 私の方法にステップを傾けることができません。 jsonに渡すことのできる制限はありますか?何が間違っていると思いますか?ここでjsonを使用して大量のデータをコントローラにプッシュできません

は私のjqueryのコードはここ

  $('#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); 
        }); 

       }); 

であるあなたのコードは$.getメソッドを使用してGET呼び出しを行っているコントローラ

   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); 

       } 

答えて

2

の私の方法です。 GET呼び出しはクエリ文字列を介してデータを送信し、制限があります。

リクエスト本体にデータを送信するPOST呼び出しの使用を検討する必要があります。そのためにjquery $.postメソッドを使用できます。

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

また、すべてを1つの文字列値として送信しています。あなたはそれをする必要はありません。 javascriptオブジェクトを送信し、ビューモデルをパラメータとして使用すると、デフォルトのモデルバインダは、投稿されたオブジェクトをビューモデルオブジェクトのプロパティにマップできます。

+0

私は今これを試して、あなたに戻ってきます。ありがとう。 – user2320476

関連する問題