我有一部分視圖是通過RenderAction調用一個子動作呈現的。我如何從這個子操作中獲得父控制器和操作。如何從兒童動作中獲取當前的控制器和動作?
當我使用..
@ViewContext.RouteData.Values["action"]
我找回兒童行動的名字,但我需要的是家長/呼叫行動。
感謝
順便說一句,我使用MVC 3剃鬚刀。
我有一部分視圖是通過RenderAction調用一個子動作呈現的。我如何從這個子操作中獲得父控制器和操作。如何從兒童動作中獲取當前的控制器和動作?
當我使用..
@ViewContext.RouteData.Values["action"]
我找回兒童行動的名字,但我需要的是家長/呼叫行動。
感謝
順便說一句,我使用MVC 3剃鬚刀。
如果你想從孩子動作本身(而不是視圖)中訪問這個,你可以使用
ControllerContext.ParentActionViewContext.RouteData.Values["action"]
發現...
how-do-i-get-the-routedata-associated-with-the-parent-action-in-a-partial-view
ViewContext.ParentActionViewContext.RouteData.Values["action"]
使用模型綁定來獲取操作名稱,控制器名稱或任何其他url值:
routes.MapRoute("City", "{citySlug}", new { controller = "home", action = "city" });
[ChildActionOnly]
public PartialViewResult Navigation(string citySlug)
{
var model = new NavigationModel()
{
IsAuthenticated = _userService.IsAuthenticated(),
Cities = _cityService.GetCities(),
GigsWeBrought = _gigService.GetGigsWeBrought(citySlug),
GigsWeWant = _gigService.GetGigsWeWant(citySlug)
};
return PartialView(model);
}
如果部分在另一個部分內,除非找到最頂層的父視圖內容,否則這將不起作用。您可以使用此找到它:
var parentActionViewContext = ViewContext.ParentActionViewContext;
while (parentActionViewContext.ParentActionViewContext != null)
{
parentActionViewContext = parentActionViewContext.ParentActionViewContext;
}
我有同樣的問題,並用相同的溶液卡洛斯·馬丁內斯來了,除了我把它變成一個擴展:
public static class ViewContextExtension
{
public static ViewContext TopmostParent(this ViewContext context)
{
ViewContext result = context;
while (result.ParentActionViewContext != null)
{
result = result.ParentActionViewContext;
}
return result;
}
}
我希望這會幫助別人誰有同樣的問題。
它幫助我很多歡呼隊友! – 2015-05-14 09:03:31