MVC错误:字符串的长度超过了在maxJsonLength属性上设置的值

时间:2019-12-06 01:54:43

标签: javascript asp.net-mvc-4

我要检索数千行,但错误是它超出了maxlenghtjson属性,因此如果我有数百万个数据,将来也不会。你能帮我如何用我的代码解决这个问题。我只希望所有人在数据库中显示我的数据。

-我的控制器,我从视图中传递参数。

public JsonResult GetSummaryDetails(string TranNo, string BranchCode)
    {
        List<SummaryDetails> summaryDetails = new List<SummaryDetails>();
        dynamic user = Session["UserProfile"];
        var UserID = user[0].UserID.ToString();
        var UserCode = user[0].DeptCode.ToString();
        summaryDetails = dataAccessLayer1.GetAllSummaryDetails(TranNo,BranchCode);
        return Json((summaryDetails), JsonRequestBehavior.AllowGet);
    }

-我在DataAccessLayer中的方法

public List<SummaryDetails> GetAllSummaryDetails(string TranNo, string BranchCode)
{
    List<SummaryDetails> lstSummaryDetails = new List<SummaryDetails>();
    using (SqlConnection con = new SqlConnection(conn))
    {
        SqlCommand cmd = new SqlCommand("spn_viewSummaryApproval", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@TranNo", TranNo);
        cmd.Parameters.AddWithValue("@BranchCode", BranchCode);

        con.Open();
        SqlDataReader rdr = cmd.ExecuteReader();

        while (rdr.Read())
        {
            SummaryDetails summaryDetails = new SummaryDetails();
            summaryDetails.EmployeeName = rdr["EmployeeName"].ToString();
            summaryDetails.ActionType = rdr["ActionType"].ToString();
            summaryDetails.ActionDateTime = rdr["ActionDateTime"].ToString();
            summaryDetails.Remarks = rdr["Remarks"].ToString();

            lstSummaryDetails.Add(summaryDetails);
        }
        con.Close();
    }
    return lstSummaryDetails;
}

-这是我使用DataTable并将其传递给控制器​​的视图。

<script>    
$(document).ready(function () {

        var dataTable = $('#SummaryTable').DataTable({
            "language": {
                emptyTable: "No Transaction"

            },
            ajax: {
                url: "@Url.Action("GetSummaryTxn")",
                dataType: "json",
                retrieve: "true",
                processing: "true",
                serverSide: "true",    
                type: "POST",
                dataSrc: "",

            },
            order: [],
            columnDefs: [
                {
                    targets: [1],
                    orderable: false,
                }

            ],

            columns: [

                {data: "BranchName"},
                {
                   data: "TranNo",
                    render: function (data, type, row, meta) {
                        var valueTran = row.TranNo;
                        var valueBranch = row.BranchCode;
                        var TranNo = row.TranNo + '<button type="button" id="'+ valueBranch +'" data-value="'+ valueTran+ '" class="btn btn-sm btn-primary btnView"><i class="fas fa-arrow-right"></i></button>'

                       return TranNo;
                    },

                },
                {
                    data: "TranType"
                },

                { data: "RecordStatus" },
                { data: "RequestorName" },
                { data: "RequestDate" },
                { data: "LastApprover" },
                { data: "LastApproveDate" },
                { data: "TranDate" },
            ]    
        });
           });

</script>

1 个答案:

答案 0 :(得分:0)

可能是this post的副本。

您可以在web.config中设置json序列化的最大长度,如下所示:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

Json((summaryDetails), JsonRequestBehavior.AllowGet)的调用还具有自己的MaxJsonLength属性,您可以将其设置为某个上限。