시나리오가 있습니다. 내 프로젝트에서 인터넷과 인트라넷의 두 가지 모드를 처리해야합니다. 이제는 모드를 기반으로 필터를 적용해야합니다 (조건에 따라) 모드를 기반으로 필터를 적용하는 가장 좋은 방법은 무엇입니까?MVC 조건부 필터 공급자
이렇게하는 한 가지 방법은 사용자 지정 필터 공급자를 만들고 등록하는 것입니다. 언제 어떻게 응용 프로그램 모드를 확인할 수 있습니까?
public class ConditionalFilterProvider : IFilterProvider {
private readonly
IEnumerable<Func<ControllerContext, ActionDescriptor, object>> _conditions;
public ConditionalFilterProvider(
IEnumerable<Func<ControllerContext, ActionDescriptor, object>> conditions)
{
_conditions = conditions;
}
public IEnumerable<Filter> GetFilters(
ControllerContext controllerContext,
ActionDescriptor actionDescriptor) {
return from condition in _conditions
select condition(controllerContext, actionDescriptor) into filter
where filter != null
select new Filter(filter, FilterScope.Global, null);
}
}
을 그리고 당신은 IntranetAttribute 및 InternetAttribute라는 두 개의 사용자 정의 ActionFilterAttribute을 가지고 :
감사합니다, -Babu
인트라넷이나 인터넷에서 사용자가 어떤 네트워크인지 쉽게 알 수 있습니까? 예 : 인트라넷 IP가 10, 172 또는 192로 시작합니까? – Mark
맞습니다.하지만 질문은 조건부 필터를 적용하는 것과 관련이 있습니다. – Babu