有时候我们有这种需求,记住编辑之前的查询条件和页码,保存之后要返回到之前的列表页面,并自动加载到之前选择的条件和页码。
比如:我们输入一些查询条件,要编辑的数据在查询结果的第X页。当我们编辑之后也要返回到之前的筛选条件的第X页,而不是返回一到第一页。
这个需求尤其是要编辑多条数据时特别方便。下面就通过ASP.NET mvc5来分享一下我的解决办法。
一、修改功能(跳页)
编辑数据加载Action:
public ActionResult Edit(string ID)
{
var r = DKeywords.GetModel(ID);
var site = DSite.GetModel(r.SiteID);
ViewBag.SiteName = site.Name;
ViewBag.SiteID = site.UID;
ViewBag.UrlReferrer = Request.UrlReferrer != null ? Request.UrlReferrer.PathAndQuery : "";//记住前一页面的Url地址
return View(r);
}
其中:ViewBag.UrlReferrer = Request.UrlReferrer != null ? Request.UrlReferrer.PathAndQuery : "";//
就是要加的页面用来记住之前的Url地址用于将来跳转回去。
在Edit对应的视图Edit.cshtm加一个hidden用来存这个值。
编辑表单提交后接收Action:
[HttpPost]
public ActionResult Edit(MSite_Keywords model)
{
var urlReferrer = Request.Params["UrlReferrer"];
ViewBag.UrlReferrer = urlReferrer;
DKeywords.Update(model);
if (!string.IsNullOrEmpty(urlReferrer))
return Redirect(urlReferrer);
return RedirectToAction("List", new { ID = model.SiteID });
}
二、删除功能(本页表单提交)
还有一种操作就是删除,这个比较特殊不会跳页,就在列表页面提交的。
对应视图:
只需要对应Action加如下面代码:
return Redirect(Request.UrlReferrer.PathAndQuery);