我有一个可以过滤的索引操作,使用查询字符串完成。当我选择一条记录时,我会转到详细信息操作。从那里我可以导航到与此记录相关的其他操作,然后将引导回到详细信息操作。我希望能够从索引页面保存URL,这将使查询字符串参数保持不变。显然,我无法使用直接的Request.UrlReferrer执行此操作,因为如果之前的操作不是索引,它就不会是正确的。我想出了一个解决方案,但我想知道是否有更好的方法。谢谢!
public ActionResult Details(int? id)
{
var url = Request.UrlReferrer;
// Save URL if coming from the Employees/Index page
if (url != null && url.AbsolutePath == "/Employees")
Session.Add("OfficeURL", url.ToString());
// Model Stuff
return View();
}
详细信息视图
@Html.ActionLink("Back to List", "Index", null, new { @href = Session["OfficeURL"] })
答案 0 :(得分:1)
您需要传递一个“返回网址”,其中包含指向其他视图的链接。基本上:
<强> Index.cshtml 强>
@Html.ActionLink("View Details", "Details", "Foo", new { returnUrl = Request.RawUrl })
这会将当前索引URL放在链接的查询字符串中。然后,在您的其他操作中,您将接受此作为参数并将其存储在ViewBag
中:
public ActionResult Details(int? id, string returnUrl = null)
{
...
ViewBag.ReturnUrl = returnUrl;
return View();
}
然后,在这些其他视图中,您将以与上述相同的方式使用此ViewBag
成员:
<强> Details.cshtml 强>
@Html.ActionLink("Click Me!", "Foo", "Foo", new { returnUrl = ViewBag.ReturnUrl })
当您准备好返回索引时,您将链接/重定向到您传递的返回网址。