別の 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 リファラー 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 ????