Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax DataTables Asp.NETMVC4进程_Ajax_Asp.net Mvc_String_Datatables - Fatal编程技术网

Ajax DataTables Asp.NETMVC4进程

Ajax DataTables Asp.NETMVC4进程,ajax,asp.net-mvc,string,datatables,Ajax,Asp.net Mvc,String,Datatables,我有一个使用数据表的项目。它的工作方式是ajax请求。它在8-12秒内完成。我需要优化这个代码,但我不知道如何优化。字符串处理是最糟糕的部分 public JsonResult PageModel(Models.DataTable.ParamModel model, byte type) { DateTime startTime = DateTime.Now; using (var db = Helper.Context()) {

我有一个使用数据表的项目。它的工作方式是ajax请求。它在8-12秒内完成。我需要优化这个代码,但我不知道如何优化。字符串处理是最糟糕的部分

    public JsonResult PageModel(Models.DataTable.ParamModel model, byte type)
    {
        DateTime startTime = DateTime.Now;
        using (var db = Helper.Context())
        {
            var allEntries = db.MembershipVacations.Where(i => i.Type == type).ToList();
            IEnumerable<DatabaseProcedure.Models.MembershipVacation> list = new List<DatabaseProcedure.Models.MembershipVacation>();

            Func<DbModels.MembershipVacation, string> orderingFunction = (c =>
                                                    model.iSortCol_0 == 0 ? c.Membership.Username : "");

            Func<DbModels.MembershipVacation, DateTime> dateOrderingFunction = (c =>
                                                    model.iSortCol_0 == 1 ? c.PostDate : 
                                                    model.iSortCol_0 == 3 ? c.StartDate :
                                                    model.iSortCol_0 == 4 ? c.EndDate : DateTime.MaxValue);

            /*Func<DbModels.MembershipVacation, string> orderingFunction = (c => model.iSortCol_0 == 1 ? c.ID.ToString() :
                                                    model.iSortCol_0 == 2 ? c.Membership.Username :
                                                    c.Description);*/

            if (User.IsInRole("Admin"))
            {
                if (model.sSearch.IsNull())
                {
                    if (model.sSortDir_0 == "asc")
                    {
                        list = allEntries
                            .OrderBy(orderingFunction);

                        if (model.iSortCol_0 == 1 || model.iSortCol_0 == 3 || model.iSortCol_0 == 4)
                        {
                            list = allEntries.OrderBy(dateOrderingFunction);
                        }
                    }
                    else
                    {
                        list = allEntries
                            .OrderByDescending(orderingFunction);


                        if (model.iSortCol_0 == 1 || model.iSortCol_0 == 3 || model.iSortCol_0 == 4)
                        {
                            list = allEntries.OrderByDescending(dateOrderingFunction);
                        }
                    }
                    list = list
                        .Skip(model.iDisplayStart)
                        .Take(model.iDisplayLength);
                }
                else
                {
                    list = allEntries
                        .Where(i =>
                        i.Membership != null ? i.Membership.Username.Contains(model.sSearch, StringComparison.OrdinalIgnoreCase) : false
                        || i.Membership != null && i.Membership.Department != null ? i.Membership.Department.Name.Contains(model.sSearch, StringComparison.OrdinalIgnoreCase) : false
                        || i.StartDate.ToString().Contains(model.sSearch, StringComparison.OrdinalIgnoreCase)
                        || i.EndDate.ToString().Contains(model.sSearch, StringComparison.OrdinalIgnoreCase));

                    if (model.sSortDir_0 == "asc")
                    {
                        list = list
                            .OrderBy(orderingFunction);

                        if (model.iSortCol_0 == 1 || model.iSortCol_0 == 3 || model.iSortCol_0 == 4)
                        {
                            list = list.OrderBy(dateOrderingFunction);
                        }

                    }
                    else
                    {
                        list = list
                            .OrderByDescending(orderingFunction);

                        if (model.iSortCol_0 == 1 || model.iSortCol_0 == 3 || model.iSortCol_0 == 4)
                        {
                            list = list.OrderByDescending(dateOrderingFunction);
                        }

                    }
                }
            }
            else
            {
                var approveList = db.MembershipVacationApproves.ToList();
                if (model.sSearch.IsNull())
                {
                    list = approveList
                        .Where(i => i.MembershipID == UI.Helper.User.ID || i.MembershipVacation.MembershipID == UI.Helper.User.ID)
                        .Select(i => i.MembershipVacation)
                        .Distinct()
                        .Where(i => i.Type == type)
                        .Skip(model.iDisplayStart)
                        .Take(model.iDisplayLength);
                }
                else
                {
                    list = approveList
                        .Where(i => i.MembershipID == UI.Helper.User.ID || i.MembershipVacation.MembershipID == UI.Helper.User.ID)
                        .Select(i => i.MembershipVacation)
                        .Distinct()
                        .Where(i =>
                        i.Type == type && (
                        i.Membership != null ? i.Membership.Username.Contains(model.sSearch, StringComparison.OrdinalIgnoreCase) : false
                        || i.Membership.Department != null ? i.Membership.Department.Name.Contains(model.sSearch, StringComparison.OrdinalIgnoreCase) : false
                        || i.StartDate.ToString().Contains(model.sSearch, StringComparison.OrdinalIgnoreCase)
                        || i.EndDate.ToString().Contains(model.sSearch, StringComparison.OrdinalIgnoreCase)))
                        .Skip(model.iDisplayStart)
                        .Take(model.iDisplayLength);
                }
            }


            List<string[]> result = new List<string[]>();
            foreach (var item in list)
            {
                var waiting = item.MembershipVacationApproves.Count(i => i.State == UI.Vacation.ApproveState.Waiting) > 0;
                var cancel = item.MembershipVacationApproves.Count(i => i.State == UI.Vacation.ApproveState.Cancel) > 0;
                var approve = item.MembershipVacationApproves.Count(i => i.State == UI.Vacation.ApproveState.Approve) == item.MembershipVacationApproves.Count;
                var edit = item.Membership.MembershipRelation != null ? item.Membership.MembershipRelation.OwnerID == UI.Helper.User.ID : false;
                var canApprove = item.MembershipVacationApproves.Count(i => i.MembershipID == UI.Helper.User.ID) == 1;


                StringBuilder name_link = new StringBuilder(),
                    durumu = new StringBuilder(),
                    islemler = new StringBuilder();

                if (item.Membership.Staff != null)
                {
                    name_link.Append("<a href=" + this.Url.Action("Profile", "Staff", new { id = item.MembershipID }) + ">" + item.Membership.Username + "</a>");
                }
                else
                {
                    name_link.Append(item.Membership.Username);
                }
                if (!cancel)
                {
                    if (approve)
                    {
                        if (DateTime.Now < item.StartDate)
                        {
                            durumu.Append("<small class='btn green-bg'>İstek onayladı.</small>");
                        }
                        else
                        {
                            if (DateTime.Now > item.EndDate)
                            {
                                durumu.Append("<small class='btn green'>Kişi izinden dönmüş.</small>");
                            }
                            else
                            {
                                durumu.Append("<small class='btn green'>Kişi izinde.</small>");
                            }
                        }
                    }
                    else
                    {
                        durumu.Append("<small class='btn orange'>İstek onaylanması için bekleniyor.</small>");
                    }
                }
                else
                {
                    durumu.Append("<small class='btn red'>İstek iptal edilmiş</small>");
                }

                islemler.Append("<div class='btn-group'>");
                islemler.Append("<a class='btn green' href='#' data-toggle='dropdown'><i class='icon-user'></i>İşlemler");
                islemler.Append("<i class='icon-angle-down'></i></a>");
                islemler.Append("<ul class='dropdown-menu'>");

                islemler.Append("<li><a href='" + this.Url.Action("RequestDetail", "Vacation", new { id = item.ID }) + "' data-toggle='modal' data-target='#'><i class='icon-search'>");
                islemler.Append("</i>İncele</a></li>");

                /*if (User.IsInRole("İzin Onaylama") || edit)
                {
                    islemler += "<li><a href='" + this.Url.Action("Request", "Vacation", new { id = item.ID }) + "'><i class='icon-search'>";
                    islemler += "</i>Düzenle</a></li>";
                }*/
                if (!(DateTime.Now > item.StartDate && approve) && canApprove)
                {
                    islemler.Append("<li><a href=" + this.Url.Action("ApproveRequest", "Vacation", new { id = item.ID }) + "><i class='icon-ok'></i>Onayla</a></li>");
                    islemler.Append("<li><a href=" + this.Url.Action("DeclinePage", "Vacation", new { id = item.ID }) + " data-toggle='modal' data-target='#'><i class='icon-remove'></i>Onaylama</a></li>");
                }

                islemler.Append("</ul>");
                islemler.Append("</div>");

                result.Add(
                    new string[] 
                    {
                        name_link.ToString(),
                        item.PostDate.ToString(),
                        item.Membership.Department != null ? item.Membership.Department.Name : string.Empty,
                        item.StartDate.ToString(),
                        item.EndDate.ToString(),
                        durumu.ToString(),
                        islemler.ToString()
                    });
            }

            var total = (DateTime.Now - startTime);

            System.Diagnostics.Debug.WriteLine("total ms "  + total.TotalMilliseconds);

            return Json(new
            {
                sEcho = model.sEcho,
                iTotalRecords = allEntries.Count(),
                iTotalDisplayRecords = allEntries.Count(),
                aaData = result
            }, JsonRequestBehavior.AllowGet);

        }

    }
publicJSONResult页面模型(Models.DataTable.ParamModel模型,字节类型)
{
DateTime startTime=DateTime.Now;
使用(var db=Helper.Context())
{
var allEntries=db.MembershipVacations.Where(i=>i.Type==Type.ToList();
IEnumerable list=新列表();
Func orderingFunction=(c=>
model.iSortCol_0==0?c.Membership.Username:“”);
Func dateOrderingFunction=(c=>
model.iSortCol_0==1?c.发布日期:
model.iSortCol_0==3?c.起始日期:
model.iSortCol_0==4?c.EndDate:DateTime.MaxValue);
/*Func orderingFunction=(c=>model.iSortCol_0==1?c.ID.ToString():
model.iSortCol_0==2?c.Membership.Username:
c、 说明)*/
if(User.IsInRole(“Admin”))
{
if(model.sSearch.IsNull())
{
如果(型号0==“asc”)
{
列表=所有入口
.OrderBy(orderingFunction);
如果(model.iSortCol_0==1 | | model.iSortCol_0==3 | | model.iSortCol_0==4)
{
list=allEntries.OrderBy(dateOrderingFunction);
}
}
其他的
{
列表=所有入口
.OrderByDescending(orderingFunction);
如果(model.iSortCol_0==1 | | model.iSortCol_0==3 | | model.iSortCol_0==4)
{
list=allEntries.OrderByDescending(dateOrderingFunction);
}
}
列表=列表
.Skip(model.iDisplayStart)
.Take(model.id显示长度);
}
其他的
{
列表=所有入口
.其中(i=>
i、 Membership!=null?i.Membership.Username.Contains(model.sSearch,StringComparison.OrdinalIgnoreCase):false
||i.Membership!=null&&i.Membership.Department!=null?i.Membership.Department.Name.Contains(model.sSearch,StringComparison.OrdinalIgnoreCase):false
||i.StartDate.ToString()包含(model.sSearch、StringComparison.OrdinalIgnoreCase)
||i.EndDate.ToString()包含(model.sSearch、StringComparison.OrdinalIgnoreCase));
如果(型号0==“asc”)
{
列表=列表
.OrderBy(orderingFunction);
如果(model.iSortCol_0==1 | | model.iSortCol_0==3 | | model.iSortCol_0==4)
{
list=list.OrderBy(dateOrderingFunction);
}
}
其他的
{
列表=列表
.OrderByDescending(orderingFunction);
如果(model.iSortCol_0==1 | | model.iSortCol_0==3 | | model.iSortCol_0==4)
{
list=list.OrderByDescending(dateOrderingFunction);
}
}
}
}
其他的
{
var approveList=db.MembershipVacationApproves.ToList();
if(model.sSearch.IsNull())
{
列表=批准列表
.Where(i=>i.MembershipID==UI.Helper.User.ID | | i.MembershipVacation.MembershipID==UI.Helper.User.ID)
.选择(i=>i.MembershipVacation)
.Distinct()
.Where(i=>i.Type==Type)
.Skip(model.iDisplayStart)
.Take(model.id显示长度);
}
其他的
{
列表=批准列表
.Where(i=>i.MembershipID==UI.Helper.User.ID | | i.MembershipVacation.MembershipID==UI.Helper.User.ID)
.选择(i=>i.MembershipVacation)
.Distinct()
.其中(i=>
i、 类型==类型&&(
i、 Membership!=null?i.Membership.Username.Contains(model.sSearch,StringComparison.OrdinalIgnoreCase):false
||i.Membership.Department!=null?i.Membership.Department.Name.Contains(model.sSearch,StringComparison.OrdinalIgnoreCase):false
||i.StartDate.ToString()包含(model.sSearch、StringComparison.OrdinalIgnoreCase)
||i.EndDate.ToString().Contains(model.sSearch、StringComparison.OrdinalIgnoreCase)))
.Skip(model.iDisplayStart)
.Take(model.id显示长度);
}
}
列表结果=新列表();
foreach(列表中的变量项)
{
var waiting=item.MembershipVacationApproves.Count(i=>i.State==UI.Vacation.ApproveState.waiting)>0;
var cancel=item.MembershipVacationApproves.Count(i=>i.State==UI.Vacation.ApproveState.cancel)>0;
var approve=item.MembershipVacationApproves.Count(i=>i.State==UI.Vacation.ApproveState.approve)==item.MembershipV