2

コントローラーアクションがどのビューから呼び出されているかを知る方法はありますか? たとえば、「ControllerContext.HttpContext.Request.PhysicalPath」を使用したいのですが、コントローラー アクション自体が配置されているパスを返します。

    public ActionResult HandleCreateCustomer()
    {
        // Set up the customer
        //..code here to setup the customer

        //Check to see of the calling view is the BillingShipping view
        if(ControllerContext.HttpContext.Request.PhysicalPath.Equals("~/Order/BillingShipping"))
        {
            //
            return RedirectToAction("OrderReview", "Order", new { id = customerId });
        }
        else
        {
            return RedirectToAction("Index", "Home", new { id = customerId });
        }
    }
4

3 に答える 3

1

呼び出される可能性のある場所の固定数がある場合は、各値が呼び出された可能性のある場所に対応する列挙型を作成できます。次に、この列挙値を HandleCreateCustomer に渡し、それに基づいて条件ステートメントを実行するだけです。

于 2012-12-27T22:50:29.563 に答える
0

現時点では、次のようなものを使用しています。

ビューでは、次を使用して TempData 変数を設定しています。

@{TempData["ViewPath"] = @Html.ViewVirtualPath()}

HtmlHelper メソッド ViewVirtualPath() は、System.Web.Mvc.Html 名前空間 (通常どおり) にあり、次のようになり、ビューの仮想パスを表す文字列を返します。

public static string ViewVirtualPath(this HtmlHelper htmlHelper)
    {            
        try{
            return ((System.Web.WebPages.WebPageBase)(htmlHelper.ViewDataContainer)).VirtualPath;
        }catch(Exception){
            return "";
        }
    }

次に、明らかにコントローラーの TempData 変数を読み取ります。

于 2013-08-29T22:36:49.900 に答える
0

別の方法を見つけました。コントローラーでは、どのページから呼び出されたかを知りたいと考えています。コントローラーに次を追加しました

ViewBag.ReturnUrl = Request.UrlReferrer.AbsolutePath;

次に、ビューに「戻る」ボタンがあります

@(Html.Kendo().Button().Name("ReturnButton")
            .Content("Back to List").Events(e => e.Click("onReturn"))
            .HtmlAttributes(new { type = "k-button" })
        )

次に、onReturn ハンドラーの JavaScript

function onReturn(e) {
    var url = '@(ViewBag.ReturnUrl)';
    window.location.href = url;
}
于 2015-01-20T22:52:45.187 に答える