2011-04-06 3 views
2

표준 mvc 컨트롤러에서 서브 클래 싱 된 기본 컨트롤러가 있습니다. 이 컨테이너에는 컨트롤러와 관련된 유용한 메소드가 많이 있습니다.Asp.net MVC - Asynch 컨트롤러 내 기본 컨트롤러에서 기능을 얻으십시오

은 지금 당신이

AsyncController

서브 클래스 컨트롤러를 만들 필요가해야 할,

그러나 나의 새로운 컨트롤러 중 하나에서 일부 asych 기능이 필요하지만, 나 또한 내베이스 기능에 액세스 할 컨트롤러

물론 다중 상속은

그래서 어떻게이 문제를 얻는 것은 불가능하다?

답변

1

재사용 할 기능을 서비스 계층, 작업 필터, 인증 필터, 모델 바인더 등으로 구체화 할 수 있습니다. 재사용 할 기능에 따라 달라 지므로 쉽게베이스를 전환 할 수 있습니다 컨트롤러를 비동기 컨트롤러에 연결하고 기능을 유지합니다. 비동기 컨트롤러를 사용하려면 AsyncController에서 파생되어야합니다.

+0

인수를 위해베이스 컨트롤러에서 사용할 수있는 모든 기능을 원하고 기본 기능이 존재하는 것 같습니다. 특정한 컨트롤러를 서브 클래 싱하여 강제로 asych로 만드는 것은 이상한 결정 인 것 같습니다. 그것은 무언가를 놓치지 않는 한 취성/반복 상속 계층 구조를 강제합니다. (확실하게 들리지 않은) – josedelascasa

+0

@josedelascasa, 아니 아무것도 놓치지 않습니다. 프레임 워크 설계자가이를 구현하기로 결정한 방식입니다. 인터페이스 대신 추상 클래스를 사용한다는 사실에 반대하는 비평가가 있습니다.하지만 실제로는 인터페이스가 아니라 추상 클래스입니다. –

0

컨트롤러 클래스를 IAsyncManagerContainerIAsyncController으로 상속 한 다음 MVC 소스 코드의 코드를 사용하여 직접이 기능을 구현할 수 있습니다. 기능을 위임하는 자체 클래스에 캡슐화 할 수도 있습니다.

+0

예, 그건 나쁜 생각이 아닙니다. 나는 이것에 대해 다른 방법으로 생각했다. Icontroller를 수동으로 구현했다. 그러나 그것은 당신의 방식으로 그것을 할 적은 일이 될 것입니다. 덕분에 - 비록이 질문을 잠시 동안 다른 제안을 위해 열어 두지 만 – josedelascasa

+0

하지만 여전히 비동기 기능을 필요로하는 각 컨트롤러에 대해 이것을 반복해야합니다. – josedelascasa

+0

@josedelascasa - 그 이유는 내가 자신의 클래스에 코드를 캡슐화 한 다음 호출을 위임하는 것입니다 . 각 컨트롤러에 대해 수동으로 메소드를 구현해야하지만, 이는 일부 상용구 코드의 문제 일뿐입니다. 코드 스 니펫을 사용하여 자동화 할 수도 있습니다. –

관련 문제