我需要调用另一个 MVC3 页面(P2),然后返回调用页面(P1)。然而,轻微的变化是 P2 需要调用自己,因此引用者最终可能是 P2。
所以:
P1 - (P2 -> P2 -> P2) ->P1
所以问题是我如何获取 P1 的引用 URL 并保留它,然后使用它返回到 P1,而不管 P2 调用自身的次数。
我确实尝试填充 ViewBag.Referrer:
<a href="@ViewBag.Referrer">Back</a>
使用以下控制器代码,尝试仅在原始调用中设置它。然而,ViewBag.Referrer 似乎总是选择 P2 Referrer URL,即使在调试模式下,由于 IsOriginalCall=0,它没有重置 ViewBag.Referrer。真奇怪。就好像我在存储一个指针而不是值。
public ViewResult Index(int id = 0, int IsOriginalCall = 0)
{
if (IsOriginalCall =1)
{
if (Request.UrlReferrer != null)
{
ViewBag.Referrer = Request.UrlReferrer.LocalPath;
}
}
ViewBag.SLIid = id == 0 ? 4 : id;
return View(db.StdSection.Where(r=>r.InWizard).OrderBy(r=>r.Name).ToList());
}
想法和解决方案将不胜感激。我一直在这个圈子里转来转去。
提前致谢。
编辑,使用 TempData 尝试 2:
调用代码:
@Html.ActionLink("Sections", "Index","SSLI2", new { id=item.Id, ReturnUrl = Request.Url.ToString() },null)
控制器:
public ViewResult Index(string ReturnUrl, int id = 0)
{
if (ReturnUrl != "x")
{
//ViewBag.Referrer = Request.UrlReferrer.LocalPath;
TempData["Referrer"] = ReturnUrl;
}
ViewBag.SLIid = id == 0 ? 4 : id;
return View(db.StdSection.Where(r=>r.InWizard).OrderBy(r=>r.Name).ToList());
}
看法:
<a href="@TempData["Referrer"]">Back</a>
产生:
<a href="">Back</a> when P2 goes back to P2, but seems to use P2 referrer URL ????