使用JSON JavaScriptSerializer进行序列化或反序列化时出错。MVC剑道网格绑定

使用JSON JavaScriptSerializer进行序列化或反序列化时出错。MVC剑道网格绑定,json,asp.net-mvc,serialization,kendo-ui,kendo-grid,Json,Asp.net Mvc,Serialization,Kendo Ui,Kendo Grid,我使用Ienumerable而不是Json数据将数据绑定到剑道网格 我收到这个错误: 使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了maxJsonLength属性上设置的值 即使在web.config中尝试了maxjsonlength以下的设置 <system.web.extensions> <scripting> <webServices> <jsonSerialization max

我使用Ienumerable而不是Json数据将数据绑定到剑道网格

我收到这个错误: 使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了maxJsonLength属性上设置的值

即使在web.config中尝试了maxjsonlength以下的设置

<system.web.extensions>
<scripting>
  <webServices>

    <jsonSerialization maxJsonLength="2147483647" />
  </webServices>
</scripting>

这是我的剑道格网

@model IEnumerable<AssetTrackingSystem.Model.SampleDetailsSummary>
    @(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns=>
{
    columns.Bound(p => p.JobNumber).Title("Job Number").Width("125px");
    columns.Bound(p => p.SampleNumber).Template(@<text></text>).ClientTemplate("<a href='" + Url.Action("SampleDetails", "JobDetails", new { AssetId = "#=AssetId#" }) + "'>#=SampleNumber#</a>").Title("Sample Number").Width("125px");
    columns.Bound(p => p.SampleType).Title("Sample Type").Width("125px");
    columns.Bound(p => p.ServiceVendor).Title("Service Vendor").Width("125px");
    columns.Bound(p => p.BarCode).Title("Barcode").Width("125px");
    columns.Bound(p => p.LocationName).Title("Current Location").Width("125px");
    columns.Bound(p => p.GPS).Title("GPS").Width("125px");     
}).Pageable().Sortable().Scrollable(scr => scr.Height(scroolheight)).Filterable().Pageable(pageable => pageable
       .Refresh(true)
       .PageSizes(true)
       .ButtonCount(5)).DataSource(dataSource => dataSource
   .Ajax()
   .PageSize(50)
   .ServerOperation(false)
   .Model(model => model.Id(p => p.AssetId))
)
@model IEnumerable”).Title(“样本号”).Width(“125px”);
columns.Bound(p=>p.SampleType).Title(“样本类型”).Width(“125px”);
columns.Bound(p=>p.ServiceVendor).Title(“Service Vendor”).Width(“125px”);
列.绑定(p=>p.BarCode).标题(“BarCode”).宽度(“125px”);
columns.Bound(p=>p.LocationName).Title(“当前位置”).Width(“125px”);
列。绑定(p=>p.GPS)。标题(“GPS”)。宽度(“125px”);
}).Pageable().Sortable().scr=>scr.Height(scroolheight)).Filterable().Pageable(Pageable=>Pageable
.刷新(真)
.页面大小(真)
.ButtonCount(5)).DataSource(DataSource=>DataSource
.Ajax()
.页面大小(50)
.ServerOperation(错误)
.Model(Model=>Model.Id(p=>p.AssetId))
)
这是我的控制器操作方法

   public ActionResult CompanyAssets()
    {
        Guid CompanyId = new Guid(Request.Params["CompanyId"].ToString());
        int GPSOnly = int.Parse(Request.Params["Gps"]);
        //bool GPSOnly = GPSOnly1.Equals("1") ? true : false;
        JobDetailsRepository rep = new JobDetailsRepository(Session["Connectionstring"].ToString());
        //   IList<AssetDetails> assetinfo = rep.GetAssetsByCompanyId(CompanyId);

        IList<SampleDetailsSummary> assetinfo = rep.GetAllSamplesByCompanyId(CompanyId, GPSOnly);
        CompanyRepository cmprep = new CompanyRepository(Session["Connectionstring"].ToString());
        // IList<CompanyInfoSummary> s = cmprep.GetLocationsByCompanyId(CompanyId);
        var company = cmprep.GetCompany(CompanyId);
        ViewBag.companyName = company.CompanyName;
        var model = assetinfo;
        return View(model);
    }
public ActionResult CompanyAssets()
{
Guid CompanyId=新Guid(Request.Params[“CompanyId”].ToString());
int GPSOnly=int.Parse(Request.Params[“Gps”]);
//bool GPSOnly=GPSOnly1.等于(“1”)?真:假;
JobDetailsRepository=新的JobDetailsRepository(会话[“Connectionstring”].ToString());
//IList assetinfo=rep.GetAssetsByCompanyId(CompanyId);
IList assetinfo=rep.GetAllSamplesByCompanyId(CompanyId,GPSOnly);
CompanyRepository cmprep=新的CompanyRepository(会话[“Connectionstring”].ToString());
//IList s=cmprep.GetLocationsByCompanyId(CompanyId);
var company=cmprep.GetCompany(CompanyId);
ViewBag.companyName=company.companyName;
var模型=资产信息;
返回视图(模型);
}

有谁能帮我解决这个问题吗?我正在努力解决这些问题,花了24小时

您的问题可能是您正在将网格绑定到一个具有循环引用的对象

例如

public class Employee 
{
    public Company Company {get;set}
}
public class Company
{
    public Employee Owner { get; set}
}
序列化程序将陷入无限循环,因为employee有一个公司,而公司有一个employee

另一个问题可能是
IEnumerable
的大小太大,刚好超过了允许的最大长度

使用Kendo避免这种情况的最好方法是创建视图模型,并将网格绑定到这些模型,而不是实际的数据库实体

如果
SampleDetailsSummary
只有您在网格中显示的字段,并且您不能通过删除额外的属性使其变小,那么您应该考虑使用实际的ajax功能并在服务器端进行分页