当我使用视图模型而不是文本进行过滤时,我使用 mvc 分页丢失了过滤数据

I Lost filter data with mvc paging while i filtered with viewmodel not text

这是我的控制器:

public ActionResult Index(ServiceRequestViewModel modelSearch, int? ServiesRequestIDByRadiobtn, int? Page)
{
    ViewBag.modelreqtype = modelSearch;
    var ModelQuery = from a in _db.V_Service_Request_List
                        where ((string.IsNullOrEmpty(modelSearch.ServiceRequestNumber) ? true : a.ServiceRequestNumber.Contains(modelSearch.ServiceRequestNumber)) &&
                                (!modelSearch.RequestTypeCode.HasValue ? true : a.RequestTypeCode == modelSearch.RequestTypeCode) &&
                                (!modelSearch.RequestSubTypeCode.HasValue ? true : a.RequestSubTypeCode == modelSearch.RequestSubTypeCode) &&
                                (string.IsNullOrEmpty(modelSearch.PlantName) ? true : a.PlantNameAR.Contains(modelSearch.PlantName) || a.PlantNameEn.Contains(modelSearch.PlantName)) &&
                                (!modelSearch.RegionId.HasValue ? true : a.RegionId == modelSearch.RegionId) &&
                                (string.IsNullOrEmpty(modelSearch.IndustryLicenseNumber) ? true : a.IndustryLicenseNumber.Contains(modelSearch.IndustryLicenseNumber)) &&
                                (!modelSearch.StatusCode.HasValue ? true : a.StatusCode.Value == modelSearch.StatusCode) &&
                                (!modelSearch.ServiceRequestFromDate.HasValue ? true : a.ServiceRequestCreatedDate >= modelSearch.ServiceRequestFromDate) &&
                                (!modelSearch.ServiceRequestToDate.HasValue ? true : a.ServiceRequestCreatedDate <= modelSearch.ServiceRequestToDate))
                        select a;
    
    int RequestTypesCode = GetRequestTypesIDFromUserRole();

    var assignedTasks = (from a in DB.V_Service_Request_List
                            where a.AssigneeId == CurrentUserId
                            select a).ToList();

    //----------------------- Get Evaluator data For DRP------------------------------------------------
    ViewBag.EvaluatorsModel = GetEvaluatorsData();
    //----------------------------------------------------------------------
    var model = new ServiceRequestViewModel()
    {
        Regions = _db.Regions.ToList(),  //---المنطقة
        List_RequestSubTypes = modelSearch.RequestTypeCode.HasValue ? _db.Request_Sub_Type.Where(a => modelSearch.RequestTypeCode.HasValue ? a.request_type_code == modelSearch.RequestTypeCode : true).ToList() : new List<Request_Sub_Type>(), // نوع الاجراء
        List_RequestTypeStatuses = modelSearch.RequestTypeCode.HasValue ? _db.Request_Type_Status.Where(a => modelSearch.RequestTypeCode.HasValue ? a.request_type_code == modelSearch.RequestTypeCode : true).ToList() : new List<Request_Type_Status>(),
        //var userlist = _db.AspNetUsers.Where(a => a.AspNetRoles.Any(x => btnlist.Contains(x.Id)));
    };

    model.List_ServiceRequestTable = model.List_ServiceRequestTable.Where(x => x.StatusCode != IL_Draft)
        .OrderByDescending(x => x.ServiceRequestCreatedDate).ToPagedList(Pagenumber, PageSize);
    return View(model);
}

和HTML像这样:

@Html.PagedListPager(Model, page => Url.Action("Index", new { modelSearch = ViewBag.modelSearch, page }));

我自己解决了: 我在我的控制器中这样做是为了通过服务器端分页保存我的过滤器数据

   public ActionResult Index(ServiceRequestViewModel modelSearch, int? ServiesRequestIDByRadiobtn, int? Page)
    {

        #region Pagination Conditions
        var TestModel = modelSearch;
        if (modelSearch.RequestTypeCode != null|| modelSearch.IndustryLicenseNumber != null || modelSearch.PlantName != null || modelSearch.RegionId != null || modelSearch.RequestSubTypeCode != null || modelSearch.ServiceRequestFromDate != null || modelSearch.ServiceRequestNumber != null || modelSearch.ServiceRequestToDate != null || modelSearch.StatusCode != null)
        {
            TempData["modelSearch"] = modelSearch;
        }
        else
        {
            if (Page != null)
            {
                TestModel = (ServiceRequestViewModel)TempData["modelSearch"];
                TempData["modelSearch"] = TestModel;
            }
            else
            {
                TempData["modelSearch"] = null;
            }

        }
        if (TestModel != null)
        {
            modelSearch = TestModel;
        } 
        #endregion

        var ModelQuery = from a in _db.V_Service_Request_List
                         where ((string.IsNullOrEmpty(modelSearch.ServiceRequestNumber) ? true : a.ServiceRequestNumber.Contains(modelSearch.ServiceRequestNumber)) &&
                                 (!modelSearch.RequestTypeCode.HasValue ? true : a.RequestTypeCode == modelSearch.RequestTypeCode) &&
                                 (!modelSearch.RequestSubTypeCode.HasValue ? true : a.RequestSubTypeCode == modelSearch.RequestSubTypeCode) &&
                                 (string.IsNullOrEmpty(modelSearch.PlantName) ? true : a.PlantNameAR.Contains(modelSearch.PlantName) || a.PlantNameEn.Contains(modelSearch.PlantName)) &&
                                 (!modelSearch.RegionId.HasValue ? true : a.RegionId == modelSearch.RegionId) &&
                                 (string.IsNullOrEmpty(modelSearch.IndustryLicenseNumber) ? true : a.IndustryLicenseNumber.Contains(modelSearch.IndustryLicenseNumber)) &&
                                 (!modelSearch.StatusCode.HasValue ? true : a.StatusCode.Value == modelSearch.StatusCode) &&
                                 (!modelSearch.ServiceRequestFromDate.HasValue ? true : a.ServiceRequestCreatedDate >= modelSearch.ServiceRequestFromDate) &&
                                 (!modelSearch.ServiceRequestToDate.HasValue ? true : a.ServiceRequestCreatedDate <= modelSearch.ServiceRequestToDate))
                         select a;


        int RequestTypesCode = GetRequestTypesIDFromUserRole();


        var assignedTasks = (from a in DB.V_Service_Request_List
                             where a.AssigneeId == CurrentUserId
                             select a).ToList();