2011-07-29 16 views
1

假設您有:如何確定MVC的.Net從@ Html.Action控制器

ControllerA 
ControllerB 

而且在ControllerA視圖調用:

@Html.Action("ControllerB", "Home"); 

在 '家' 行動ControllerB,你怎麼能確定最初調用的動作是什麼?

我知道我可以從http上下文中確定URL,但對於我的生活,我無法弄清楚如何使用它來映射回最初調用的控制器和操作。

Nb。我正在尋找的解決方案必須是任意的深度。如果ControllerB在調用ControllerD上的Html.Action的ControllerC上調用Html.Action,我需要能夠從ControllerD :: Home解決原來的操作是ControllerA :: Home。

+1

如果您可以通過視圖將強關聯映射回控制器,是不是使用模式錯誤?相反,通過將信息保存在一個共同的地方,可能會更好地跟蹤狀態。這只是我的第一印象。 –

回答

2

使用ControllerContext.IsChildAction屬性來確定您是否處於子動作,然後ControllerContext.ParentActionViewContext屬性包含您需要的所有信息。這有一個RouteData屬性,它可以給你控制器和操作名稱。