asp.net MVC リダイレクト時のURLについて

RedirectToAction にて詳細画面(edit)から一覧画面(index)に戻ると、URLが詳細画面のままになっている事があります。これだけならまだしも、先回と同じ遷移先だとボタンを押しても動作しないという不具合になります。いろいろ調べると、jquery mobile を使用した時に起こるようです。

この現象は、data-url を指定することで解消できます。MVCではsharedフォルダの_layout.cshtml が対象となります。下記例ではコントローラー側でViewBagに格納したURLを表示するようになっています。

<body>
        <div data-role="page" data-theme="b" data-url="@ViewBag.DataUrl">
            <div data-role="header">
                @if (IsSectionDefined("Header")) {
                    @RenderSection("Header")
                } else {
                    <h1>@ViewBag.Title</h1>
                    @Html.Partial("_LoginPartial")
                }
            </div>
            <div data-role="content">
                @RenderBody()
            </div>
        </div>
        @Scripts.Render("~/bundles/jquery", "~/bundles/jquerymobile")
        @RenderSection("scripts", required: false)
</body>

コントローラー側では、一覧画面(index) にてセットします。

public ActionResult Index()
 {
 	var path = HttpRuntime.AppDomainAppVirtualPath;
 	ViewBag.DataUrl = path + "/Settings";
 	return View();
 }

 

コメントを残す