页面查询状态条件保留

项目中经常会遇见在列表页面 输入一些条件之后查询后 进入详情页在返回之后希望查询的条件保留 这样不需要再去输入条件

如何做到查询状态保留?

核心思想 就是 查询之后的那些条件的值放入tempdata中  等返回这个页面的时候 控制器在通过tempdata接收
然后在把里面的值赋值给viewbag  然后页面的input 或者下拉框 进行绑定 从而达到状态保存

1:建立一个searchmodel  就是对应查询条件的一个对应实体model 其实就是为了保存
2:查询的时候ajax 把元素获取的条件内容  用一个匿名模拟查询对象model 接收
3:控制器的查询方法 把匿名对象接收
4:将model与tempdata对应关系建立
5:访问页面的时候 判断是否存在tempdata的值 如果有 就把tempdata反序列化实体model一一赋给viewbag
6: 页面把viewbag绑定 有没有值都无所谓 达到条件保留的效果
7:除了条件保存 数据也要按照保留的条件查出数据


jq:
function SearchContact() {
    
    var keyWord = $("#txtKeywords").val();
    var type = $("#emailType").val();
    var dateFrom = $("#DateFrom").val();
    var dateTo = $("#DateTo").val();
    var viewed = $("#Viewed").val();
    var replied = $("#Replied").val();
 
    var searchModel = {};
    searchModel.keyWord = keyWord;
    searchModel.type = type;
    searchModel.dateFrom = dateFrom;
    searchModel.dateTo = dateTo;
    searchModel.viewed = viewed;
    searchModel.replied = replied;
   
    $.ajax({
        xhr: function () {
            var xhr = new window.XMLHttpRequest();

          
            xhr.addEventListener("progress",
                function (evt) {
                    if (evt.lengthComputable) {
                        var percentComplete = evt.loaded / evt.total;
                        console.log(percentComplete);
                    }
                },
                false);

            return xhr;
        },
        url: '/PeonyTours/ContactUS/GetContactUSList',
        type: 'POST',
        data: { "searchJson": JSON.stringify(searchModel), "keyWord": keyWord, "type": type, "dateFrom": dateFrom, "dateTo": dateTo, "viewed": viewed, "replied": replied, "adminKey": $("#adminKey").val(), "menuId": $('#hidMenuId').val() },
        beforeSend: function () {
            $('.progress-bar').css('width', '15%');
            $('.progress').show();
        },
        success: function (result) {
            $('.progress-bar').css('width', '100%');

            $('#tbodyContact').html(result);

            setTimeout(function () { $('.progress').hide(); }, 500);
        },
        error: function () {
            alert("search failed")
        }
    });

}
  
控制器:接收处理数据的方法  接收ajax 条件 放入tempdata中
    public ActionResult SearchClientUserList()
        {
            int pageIndex = 1;
            string searchJson = Request.Form["searchJson"];

            TempData["SearchClentUser"] = searchJson;

            string key = Request.Form["adminKey"];
            ViewBag.KeyString = "?adminKey=" + key;
            var searchModel = JsonConvert.DeserializeObject<ClientUserSearchViewModel>(searchJson);
            if (!string.IsNullOrWhiteSpace(Request.Form["pageIndex"]))
            {
                pageIndex = Convert.ToInt32(Request.Form["pageIndex"]);
            }

            int num = (pageIndex - 1) * 20;
            List<ClientSiteUser> clientUserList = new List<ClientSiteUser>();
            var bll = new ReservationBLL();
            clientUserList = bll.GetClientUserList(searchModel);
            PagingHelp<ClientSiteUser> pageMod =
                new PagingHelp<ClientSiteUser>(20, clientUserList, clientUserList.Count());
            pageMod.PageIndex = pageIndex;
            ViewBag.clientUserList = clientUserList.Skip(num).Take(20).ToList();
            ViewBag.menuId = Request.Form["menuId"];
            ViewBag.StateList = new AA_DAL.Reservation.ReservationDal().GetAllStateList().ToList();
            return PartialView("_PartialClientUserInfo", pageMod);
        }


控制器:页面加载的方法  将内容获取 赋给viewbag 然后在查出对应的条件保存下的数据
    public ActionResult ClientUserInfo(int pageIndex = 1, Boolean back = false)
        {
            var search = TempData["SearchClentUser"] != null && back ? TempData["SearchClentUser"].ToString() : null;
            TempData["SearchClentUser"] = search;
            var searchModel = !String.IsNullOrEmpty(search)
                ? JsonConvert.DeserializeObject<ClientUserSearchViewModel>(search)
                : null;
            if (searchModel != null)
            {
                ViewBag.ClientUserId = searchModel.ClientUserId;
                ViewBag.FirstName = searchModel.FirstName;
                ViewBag.LastName = searchModel.LastName;
                ViewBag.Phone = searchModel.Phone;
                ViewBag.FromDate = searchModel.FromDate;
                ViewBag.EndDate = searchModel.EndDate;
                ViewBag.Booking = searchModel.Booking;
                ViewBag.IsBack = 1;
            }
            else
            {
                ViewBag.IsBack = 0;
                searchModel = new PA_Mod.ClientUser.ClientUserSearchViewModel();
                searchModel.FromDate = DateTime.Now.AddMonths(-3).ToString("MM/dd/yyyy");
                searchModel.Booking = "All";
            }

            string key = Request.QueryString["adminKey"];
            List<ClientSiteUser> clientUserList = new List<ClientSiteUser>();
            var bll = new ReservationBLL();
            clientUserList = bll.GetClientUserList(searchModel);
            PagingHelp<ClientSiteUser> pageMod =
                new PagingHelp<ClientSiteUser>(20, clientUserList, clientUserList.Count());
            pageMod.PageIndex = pageIndex;
            ViewBag.clientUserList = clientUserList.Skip((pageIndex - 1) * 20).Take(20).ToList();
            ViewBag.KeyString = "?adminKey=" + key;
            ViewBag.FromDate = searchModel.FromDate;
            ViewBag.menuId = Request.QueryString["menuId"];
            ViewBag.StateList = new PA_Dal.Reservation.ReservationDal().GetAllStateList().ToList();
            return View(pageMod);
        }

第二种方法  控制器对应页面  查询保存状态下的数据方法在对应的分布视图的控制器处理
 public ActionResult ContactUSList()
        {
            var search = TempData["Search"] != null ?TempData["Search"].ToString() : null;
            TempData["SearchBack"] = search;
            var searchModel = !String.IsNullOrEmpty(search)
                ? JsonConvert.DeserializeObject<ContactUsSearch>(search)
                : null;
            if (searchModel != null)
            {
               
                ViewBag.keyWord = searchModel.keyWord;
                ViewBag.type = searchModel.type;
                ViewBag.dateFrom = searchModel.dateFrom;
                ViewBag.dateTo = searchModel.dateTo;
                ViewBag.viewed = searchModel.viewed;
                ViewBag.replied = searchModel.replied;
           
            }
                    
            var Types = new ConfigurationDal().GetTypeListByCategoryName("ContactUS Type");
            ViewBag.Types = Types;
            ViewBag.key = Request["adminKey"];
            ViewBag.MenuId = Request["menuId"];
          
            return View();
        }
           
第二种写法  控制器对应分布视图  保存状态的数据在查询出来  通过是否点search来判断条件是回来的保存
还是点击之后的条件
 public ActionResult GetContactUSList(int PageIndex = 1, Boolean back = false)
        {

            ContactUsSearch models = new ContactUsSearch();
            //说明是返回页面时带有查询条件状态 并且不是点击查询按钮的时候 查询带有原来条件的数据
            if (TempData["SearchBack"] != null && Request.Form["searchJson"]==null)
            {
                var a = TempData["SearchBack"].ToString();
                models = JsonConvert.DeserializeObject<ContactUsSearch>(a);
              
            }
            else
            {
                //点击search按钮的时候 重新刷新tempdata数据
                string searchJson = Request.Form["searchJson"];
                TempData["Search"] = searchJson;
                if (!String.IsNullOrEmpty(searchJson))
                {
                    models = JsonConvert.DeserializeObject<ContactUsSearch>(searchJson);
                } 
                              
                              
            }
            ViewBag.key = Request["adminKey"];
            ViewBag.MenuId = Request["menuId"];
            List<Contact> model = new PA_Dal.ContactUs.ContactUsDal().SearchContact(models.keyWord, models.type, models.dateFrom, models.dateTo, models.viewed, models.replied);
            PagingHelp<Contact> pageMod = new PagingHelp<Contact>(20, model) { PageIndex = PageIndex };
            foreach (var item in pageMod.DataSource)
            {
                item.UserName = AA_CommonFunction.GetNewName(item.UserName, 3);
            }
            //分布视图页面数据
            return View(pageMod);
        }
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值