2011-11-09 4 views
21

소리를 통해 말 그대로 동작이 하위 동작인지 여부를 나타내는 부울 값입니다. ASP.NET MVC 3에서 filterContext.IsChildAction은 무엇입니까?

나는 꽤 자주 코드의이 비트를 참조하십시오

protected override void OnActionExecuting(ActionExecutingContext filterContext) { 
    if (filterContext.IsChildAction) return; 
    ... 
} 

거기에 "스로틀"불필요한 코드 실행 것으로 보인다 ...하지만 filterContext.IsChildAction 실제로 무엇을 의미 하는가?

+2

IsChildAction은 현재 실행중인 작업이 (보기에서 호출 할 때와 같이) 다른 작업의 하위 항목인지 여부를 알려줍니다. 그러나 당신은 이미 그것을 알고 있습니다, 그래서 질문은 무엇입니까? – Ragesh

답변

34

보기 페이지에서 현재 페이지에 다른 작업의 결과를 삽입해야 할 수 있습니다 (예 : 메뉴 삽입). 메뉴 생성은 많은 비즈니스 로직 (권한 또는 사용자 결정, 선택된 항목 선택 등)을 포함 할 수 있으므로 부분 뷰에서가 아니라 컨트롤러에서 수행됩니다.

public class MenuController : Controller 
{ 
    [ChildActionOnly] 
    public ActionResult Menu() 
    { 
     MenuViewModel model = GenerateMenu(); 
     return View(model); 
    } 
} 

행동이 유형의

은 외부 세계로부터 (URL을 방문하여)라고 할 수는 없습니다 (그리고 안된다)로, ChildAction이라고합니다. 이는 일반적으로보기 페이지에서 응용 프로그램 자체에 의해서만 호출 될 수 있습니다.

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

그리고 당신은 실행중인 작업이 자식 작업이 때 일부 특정 물건을하고자하는 (또는 원치 않는) 경우, 당신은 filterContext.IsChildAction 속성을 검사합니다.

+3

우수한 글쓰기 감사합니다. 나는 ChildActionOnly 속성이 존재하는지 전혀 몰랐습니다. 흠 ... 나는 그것을 이용해야 할 것이다, 고마워! – Chaddeus

+1

@Chad 당신을 환영합니다 :) – archil

+0

@archil 예, 좋은 설명 +1. – user981375

관련 문제