2010-08-17 9 views
1

중요한 점은 ASP.NET MVC2에 있습니다. 어떻게해야합니까? 속성에 "id"매개 변수를 적용하려면 어떻게해야합니까? 다음 구문은 분명히 작동하지 않습니다.메서드의 매개 변수가있는 메서드 특성?

[AuthorizeProject(ProjectId = id)] 
    public ActionResult Browse(int id) 
    { 
     // Stuff 

     return View(); 
    } 
+0

질문의 나머지 절반을 잊어 버리셨습니까? 현재, 전혀 이해가되지 않습니다! – leppie

+0

정말로 - "id"를 Browse()에 제공하고 AuthorizeProject (사용자 지정 특성)에 공급하려고합니다.하지만 분명히 그렇게 할 수는 없습니다. –

+0

메서드를 호출하기 전에이 작업을 수행해야합니다. 일반적으로 URL 라우터. – leppie

답변

1

속성 생성자를 설정하는 대신 이벤트 처리기 중 하나에서 ProjectId를 설정하는 방법은 무엇입니까? 컨텍스트 개체를 통해 RouteData에 액세스 할 수 있습니다.

public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     ProjectId = filterContext.RouteData.Values["id"].ToString(); 
    } 

당신은 당신이 id 매개 변수이 있거나 OnAuthorization 방법의 유효성 검사의 몇 가지 유형을 수행하는 것이 방법에 그것을 사용하고 있는지 확인해야합니다.

+0

우수 - 감사합니다. 나는 비슷한 것을했다. –

0

찾아보기 함수의 id 매개 변수는 특성 평가시 범위 내에 있지 않습니다. 그러므로 이것을 할 수 없습니다.

0

속성 매개 변수와 속성 값은 컴파일 타임에 알려야하며 대개는 리터럴이어야합니다.

속성에 메서드 매개 변수를 전달할 수 없습니다.

당신이하려는 일에 따라 다른 접근법이있을 수 있지만, 시도하려는 내용에 대한 세부 사항이 없으면 제안은 어렵습니다.

관련 문제