2015-12-01 28 views
1

有什麼辦法可以知道從哪個主視圖調用了部分視圖?我如何知道從哪個主視圖調用的部分視圖?

我有兩個主視圖調用不同的數據調用一個局部視圖。

MainIndex1.cshtml 
@Html.Partial("~/Views/Shared/_partialView.cshtml", Model) 

MainIdex2.cshtml 
@Html.Partial("~/Views/Shared/_partialView.cshtml", Model) 

所以,在_partialView我怎麼能知道它是從哪個主視圖叫什麼名字?

+1

你可以使用'ViewBag'。 'ViewBag.Caller =「MainIndex#」;'並在你的局部視圖中檢查它。 – Silvermind

+0

調用部分視圖時是否需要傳遞ViewBag?或者它是全局的可以在部分視圖中訪問? – immirza

+0

在調用局部視圖之前將其設置在主視圖中。你不必通過它,就像你說的那樣,它是'全球'的。 – Silvermind

回答

1

如果你想看看哪個控制器和動作參與調用這個局部視圖。所以,如果你想要得到這個孩子的行動中父環境下,你可以這樣做:

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

,或者您也可以使用此代碼,找出當前請求的控制器和動作名稱。

Controller: @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue 
<br /> 
View: @ViewContext.Controller.ValueProvider.GetValue("action").RawValue 

參考計算器上線之後..

Get the parent controller name from partialview action

希望這會幫助你。 謝謝

相關問題