C# 奇怪的UI冻结ASP.NETMVC

C# 奇怪的UI冻结ASP.NETMVC,c#,asp.net,json,asp.net-mvc,telerik,C#,Asp.net,Json,Asp.net Mvc,Telerik,因此,我将尽我所能解释正在发生的事情。每当我运行asp.net web应用程序时,都会向“GetRouteData”发出请求。由于某些原因,在数据已经到达之后,我的UI将冻结整整20秒 奇怪的部分: public JsonResult GetRouteData([DataSourceRequest] DataSourceRequest request) { return Json(_routeManagementService.GetMaterialRouteData().Select(

因此,我将尽我所能解释正在发生的事情。每当我运行asp.net web应用程序时,都会向“GetRouteData”发出请求。由于某些原因,在数据已经到达之后,我的UI将冻结整整20秒

奇怪的部分:

public JsonResult GetRouteData([DataSourceRequest] DataSourceRequest request)
{
    return Json(_routeManagementService.GetMaterialRouteData().Select(x => new RouteDataViewModel {
        Id = x.Id,
        MaterialNumber = x.MaterialNumber,
        BoxSize = x.BoxSize,
        EnclosureIntegration = x.EnclosureIntegration,
        EnclosurePreparation = x.EnclosurePreparation,
        FinalWiring = x.FinalWiring,
        Kiesling = x.Kiesling ?? null,
        Packaging = x.Packaging,
        PanelAssembly = x.PanelAssembly,
        PanelWiring = x.PanelWiring,
        Test = x.Test,
        ProductionLineId = x.ProductionLineId,
        BoxSizeId = x.BoxSizeId
    }).OrderBy(x => PadNumbers(x.MaterialNumber)).ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
}


public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
@(Html.Kendo()
.Grid<RouteConfigurator.Core.ViewModels.RouteDataViewModel>()
.Name("RouteDataGrid")
.Columns(column =>
{
    column.Bound(x => x.Id).Width("150px");
    column.Bound(x => x.MaterialNumber).Width("150px");
    column.ForeignKey(x => x.ProductionLineId, (System.Collections.IEnumerable)ViewData["productionLines"], "Id", "Name").Width("125px");
    column.ForeignKey(x => x.BoxSizeId, (System.Collections.IEnumerable)ViewData["boxSizes"], "Id", "Size").Width("100px");
    column.Bound(x => x.PanelAssembly).Width("175px");
    column.Bound(x => x.PanelWiring).Width("175px");
    column.Bound(x => x.EnclosurePreparation).Width("175px");
    column.Bound(x => x.EnclosureIntegration).Width("175px");
    column.Bound(x => x.FinalWiring).Width("175px");
    column.Bound(x => x.Test).Width("175px");
    column.Bound(x => x.Packaging).Width("175px");
    column.Bound(x => x.Kiesling).Width("175px");
    column.Template(@<text> </text>).Title("");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.ToolBar(toolbar =>
{
    toolbar.Create();
    toolbar.Save();
    toolbar.Excel();
})
.Excel(excel => excel.FileName("RouteData.xlsx").AllPages(true))
.Groupable()
.Sortable(x => x.Enabled(true).SortMode(GridSortMode.MultipleColumn))
.Filterable()
.HtmlAttributes(new { style = "height: 500px" })
.Scrollable(x => x.Virtual(true))
.DataSource(ds =>
{
    ds.Ajax()
        .ServerOperation(true)
        .Model(model =>
        {
            model.Id(x => x.Id);
        })
        .Sort(sort => { sort.Add("MaterialNumber").Ascending(); })
        .Events(events => events.Error("error"))
        .Update(update => update.Action("EditRouteData", "Route"))
        .Create(create => create.Action("CreateRouteData", "Route"))
        .Read(read => read.Action("GetRouteData", "Route"));

}))
所以现在如果我继续在控制器方法“GetRouteData”上设置一个断点,它会停止,我点击continue,没有UI冻结?一切都很顺利。如果我设置一个断点并点击continue(继续),它总是很顺利,但如果我让它像正常一样运行,它就会冻结

我的控制器操作:

public JsonResult GetRouteData([DataSourceRequest] DataSourceRequest request)
{
    return Json(_routeManagementService.GetMaterialRouteData().Select(x => new RouteDataViewModel {
        Id = x.Id,
        MaterialNumber = x.MaterialNumber,
        BoxSize = x.BoxSize,
        EnclosureIntegration = x.EnclosureIntegration,
        EnclosurePreparation = x.EnclosurePreparation,
        FinalWiring = x.FinalWiring,
        Kiesling = x.Kiesling ?? null,
        Packaging = x.Packaging,
        PanelAssembly = x.PanelAssembly,
        PanelWiring = x.PanelWiring,
        Test = x.Test,
        ProductionLineId = x.ProductionLineId,
        BoxSizeId = x.BoxSizeId
    }).OrderBy(x => PadNumbers(x.MaterialNumber)).ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
}


public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
@(Html.Kendo()
.Grid<RouteConfigurator.Core.ViewModels.RouteDataViewModel>()
.Name("RouteDataGrid")
.Columns(column =>
{
    column.Bound(x => x.Id).Width("150px");
    column.Bound(x => x.MaterialNumber).Width("150px");
    column.ForeignKey(x => x.ProductionLineId, (System.Collections.IEnumerable)ViewData["productionLines"], "Id", "Name").Width("125px");
    column.ForeignKey(x => x.BoxSizeId, (System.Collections.IEnumerable)ViewData["boxSizes"], "Id", "Size").Width("100px");
    column.Bound(x => x.PanelAssembly).Width("175px");
    column.Bound(x => x.PanelWiring).Width("175px");
    column.Bound(x => x.EnclosurePreparation).Width("175px");
    column.Bound(x => x.EnclosureIntegration).Width("175px");
    column.Bound(x => x.FinalWiring).Width("175px");
    column.Bound(x => x.Test).Width("175px");
    column.Bound(x => x.Packaging).Width("175px");
    column.Bound(x => x.Kiesling).Width("175px");
    column.Template(@<text> </text>).Title("");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.ToolBar(toolbar =>
{
    toolbar.Create();
    toolbar.Save();
    toolbar.Excel();
})
.Excel(excel => excel.FileName("RouteData.xlsx").AllPages(true))
.Groupable()
.Sortable(x => x.Enabled(true).SortMode(GridSortMode.MultipleColumn))
.Filterable()
.HtmlAttributes(new { style = "height: 500px" })
.Scrollable(x => x.Virtual(true))
.DataSource(ds =>
{
    ds.Ajax()
        .ServerOperation(true)
        .Model(model =>
        {
            model.Id(x => x.Id);
        })
        .Sort(sort => { sort.Add("MaterialNumber").Ascending(); })
        .Events(events => events.Error("error"))
        .Update(update => update.Action("EditRouteData", "Route"))
        .Create(create => create.Action("CreateRouteData", "Route"))
        .Read(read => read.Action("GetRouteData", "Route"));

}))
我的观点:

public JsonResult GetRouteData([DataSourceRequest] DataSourceRequest request)
{
    return Json(_routeManagementService.GetMaterialRouteData().Select(x => new RouteDataViewModel {
        Id = x.Id,
        MaterialNumber = x.MaterialNumber,
        BoxSize = x.BoxSize,
        EnclosureIntegration = x.EnclosureIntegration,
        EnclosurePreparation = x.EnclosurePreparation,
        FinalWiring = x.FinalWiring,
        Kiesling = x.Kiesling ?? null,
        Packaging = x.Packaging,
        PanelAssembly = x.PanelAssembly,
        PanelWiring = x.PanelWiring,
        Test = x.Test,
        ProductionLineId = x.ProductionLineId,
        BoxSizeId = x.BoxSizeId
    }).OrderBy(x => PadNumbers(x.MaterialNumber)).ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
}


public static string PadNumbers(string input)
{
    return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0'));
}
@(Html.Kendo()
.Grid<RouteConfigurator.Core.ViewModels.RouteDataViewModel>()
.Name("RouteDataGrid")
.Columns(column =>
{
    column.Bound(x => x.Id).Width("150px");
    column.Bound(x => x.MaterialNumber).Width("150px");
    column.ForeignKey(x => x.ProductionLineId, (System.Collections.IEnumerable)ViewData["productionLines"], "Id", "Name").Width("125px");
    column.ForeignKey(x => x.BoxSizeId, (System.Collections.IEnumerable)ViewData["boxSizes"], "Id", "Size").Width("100px");
    column.Bound(x => x.PanelAssembly).Width("175px");
    column.Bound(x => x.PanelWiring).Width("175px");
    column.Bound(x => x.EnclosurePreparation).Width("175px");
    column.Bound(x => x.EnclosureIntegration).Width("175px");
    column.Bound(x => x.FinalWiring).Width("175px");
    column.Bound(x => x.Test).Width("175px");
    column.Bound(x => x.Packaging).Width("175px");
    column.Bound(x => x.Kiesling).Width("175px");
    column.Template(@<text> </text>).Title("");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.ToolBar(toolbar =>
{
    toolbar.Create();
    toolbar.Save();
    toolbar.Excel();
})
.Excel(excel => excel.FileName("RouteData.xlsx").AllPages(true))
.Groupable()
.Sortable(x => x.Enabled(true).SortMode(GridSortMode.MultipleColumn))
.Filterable()
.HtmlAttributes(new { style = "height: 500px" })
.Scrollable(x => x.Virtual(true))
.DataSource(ds =>
{
    ds.Ajax()
        .ServerOperation(true)
        .Model(model =>
        {
            model.Id(x => x.Id);
        })
        .Sort(sort => { sort.Add("MaterialNumber").Ascending(); })
        .Events(events => events.Error("error"))
        .Update(update => update.Action("EditRouteData", "Route"))
        .Create(create => create.Action("CreateRouteData", "Route"))
        .Read(read => read.Action("GetRouteData", "Route"));

}))
@(Html.Kendo()
.Grid()
.名称(“RouteDataGrid”)
.列(列=>
{
列绑定(x=>x.Id).Width(“150px”);
列绑定(x=>x.MaterialNumber).Width(“150px”);
column.ForeignKey(x=>x.ProductionLineId,(System.Collections.IEnumerable)ViewData[“productionLines”],“Id”,“Name”).Width(“125px”);
column.ForeignKey(x=>x.BoxSizeId,(System.Collections.IEnumerable)ViewData[“boxSizes”],“Id”,“Size”).Width(“100px”);
列绑定(x=>x.PanelAssembly).Width(“175px”);
列绑定(x=>x.panelwilling).Width(“175px”);
列绑定(x=>x.EnclosurePreparation).Width(“175px”);
column.Bound(x=>x.EnclosureIntegration).Width(“175px”);
列绑定(x=>x.FinalWiring).Width(“175px”);
列绑定(x=>x.Test).Width(“175px”);
列绑定(x=>x.Packaging).Width(“175px”);
列宽(“175px”);
列.模板(@).Title(“”);
})
.Editable(Editable=>Editable.Mode(GridEditMode.InCell))
.ToolBar(ToolBar=>
{
toolbar.Create();
toolbar.Save();
toolbar.Excel();
})
.Excel(Excel=>Excel.FileName(“RouteData.xlsx”).AllPages(true))
.Groupable()
.Sortable(x=>x.Enabled(true).SortMode(GridSortMode.MultipleColumn))
.可过滤()
.HtmlAttributes(新的{style=“height:500px”})
.Scrollable(x=>x.Virtual(true))
.DataSource(ds=>
{
ds.Ajax()
.ServerOperation(真)
.Model(Model=>
{
model.Id(x=>x.Id);
})
.Sort(Sort=>{Sort.Add(“MaterialNumber”).Ascending();})
.Events(Events=>Events.Error(“Error”))
.Update(Update=>Update.Action(“EditRouteData”、“Route”))
.Create(Create=>Create.Action(“CreateRouteData”、“Route”))
.Read(Read=>Read.Action(“GetRouteData”、“Route”);
}))
我相信这与web套接字花费22秒有关。我真的不知道在这种情况下该找什么?有人能给我指出正确的方向吗


谢谢大家!

问题可能出在VisualStudio上。尝试清理解决方案,然后删除
obj
文件夹,然后重建它。您也可以尝试重新启动Visual Studio。@JamshaidKamran我已经尝试了您的建议,但问题仍然存在。