簡體   English   中英

從局部視圖中獲取當前控制器和操作

[英]Getting current controller & action from within partial view

我正在使用以下內容來獲取 asp.net MVC3 中的當前控制器和操作:

var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");

這完美地工作。 但是,如果我從我的布局調用的局部視圖中調用它,“布局”將作為當前控制器返回。 這當然是正確的行為,但是有沒有辦法訪問父控制器的名稱?

編輯以進一步澄清:

我正在_Layout.cshtml調用我的菜單控制器和部分視圖:

@Html.Action("Menu", "Layout")

然后從該菜單部分視圖中,我調用返回當前操作和控制器的代碼。

在您更新問題並顯示您的代碼之后,它變得更加清晰:您沒有包含部分視圖。 您正在調用子操作。 Html.PartialHtml.Action之間存在巨大差異。 因此,如果您想在此子操作中獲取父上下文,您可以這樣做:

public ActionResult Menu()
{
    var rd = ControllerContext.ParentActionViewContext.RouteData;
    var currentAction = rd.GetRequiredString("action");
    var currentController = rd.GetRequiredString("controller");
    ...
    return View();
}

我在此頁面上偶然發現了一種在使用 Partial 調用后訪問父控制器名稱的方法

@Html.Partial("Paging")

這可以在局部視圖中完成

@{
    var controller = ViewContext.RouteData.GetRequiredString("controller");
    var action = ViewContext.RouteData.GetRequiredString("action");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM