当我使用视图模型而不是文本进行过滤时,我使用 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();
这是我的控制器:
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();