반응형
자식 작업 내부에서 현재 컨트롤러 및 작업을 얻는 방법은 무엇입니까?
자식 작업을 호출하는 RenderAction을 통해 렌더링되는 뷰의 일부가 있습니다. 이 자식 액션 내부에서 부모 컨트롤러와 액션을 어떻게 얻을 수 있습니까?
내가 사용할 때 ..
@ViewContext.RouteData.Values["action"]
Child Action의 이름을 되찾았지만 필요한 것은 Parent / Calling 액션입니다.
감사
BTW 저는 Razor와 함께 MVC 3을 사용하고 있습니다.
뷰가 아닌 자식 작업 자체에서 액세스하려면 다음을 사용할 수 있습니다.
ControllerContext.ParentActionViewContext.RouteData.Values["action"]
그것을 발견...
ViewContext.ParentActionViewContext.RouteData.Values["action"]
부분이 다른 부분 안에 있으면 상위 뷰 콘텐츠를 찾을 때까지 작동하지 않습니다. 다음과 같이 찾을 수 있습니다.
var parentActionViewContext = ViewContext.ParentActionViewContext;
while (parentActionViewContext.ParentActionViewContext != null)
{
parentActionViewContext = parentActionViewContext.ParentActionViewContext;
}
나는 같은 문제가 있었고 Carlos Martinez와 같은 해결책을 찾았지만 그것을 확장 프로그램으로 바꿨습니다.
public static class ViewContextExtension
{
public static ViewContext TopmostParent(this ViewContext context)
{
ViewContext result = context;
while (result.ParentActionViewContext != null)
{
result = result.ParentActionViewContext;
}
return result;
}
}
나는 이것이 같은 문제를 가진 다른 사람들에게 도움이되기를 바랍니다.
모델 바인딩을 사용하여 작업 이름, 컨트롤러 이름 또는 기타 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);
}
반응형
'development' 카테고리의 다른 글
이중 물음표는 C #에서 무엇을합니까? (0) | 2021.01.06 |
---|---|
사용자 지정 종속성 속성의 기본 바인딩 모드 및 업데이트 트리거를 지정하는 방법이 있습니까? (0) | 2021.01.06 |
Mustache에서 현재 섹션의 색인을 얻는 방법 (0) | 2021.01.06 |
파이썬 슈퍼 메서드 및 호출 대안 (0) | 2021.01.06 |
인터넷에서 localhost에 액세스 (0) | 2021.01.06 |