2012-05-23 5 views
1

DataAnnotationsModelMetadataProvider에서 상속하여 사용자 지정 메타 데이터 공급자를 작성했습니다. 사용자 지정 공급자에는 GetMetadataforPropertyCreateMetadata에 대한 재정의 구현이 포함되어 있습니다.JsonResult의 사용자 지정 모델 메타 공급자

내 컨트롤러 클래스 메서드에서 ActionResult을 반환하면 내 사용자 지정 메타 데이터 공급자 코드가 실행됩니다. 그러나 JsonResult을 반환하면 사용자 지정 메타 데이터 공급자 코드가 손상되지 않습니다.

내가 누락 된 항목이 있습니까? 어떤 도움을 주시면 감사하겠습니다.

답변

0

이것은 MVC 프레임 워크의 올바른 동작이며 사용자가 묻는 것은 실제로 의미가 없습니다.

컨트롤러에서 JsonResult을 반환하면 MVC에 JSON 형식의 콘텐츠를 직접 보내 응답을 보냅니다. 컨트롤러 액션 메서드는이 시점에서 필요한 모든 것을 이미 수행했습니다.

ViewResult 유형의 ActionResult을 반환하는 경우 응답에 아무 것도 쓰여지기 전에 수행해야하는 추가 처리가 있습니다. 제공된 메타 데이터의 정보는 뷰를 렌더링 할 때 필요하므로 프레임 워크는 메타 데이터 공급자를 호출하여 뷰에 필요한 정보를 제공합니다.

따라서 JsonResult을 반환 할 때 메타 데이터 공급자가 호출되지 않는 이유는 그것이 필요하지 않기 때문입니다.

나는 무슨 일이 일어나는지 이해하는 데 도움이 될 MVC 파이프 라인의 다이어그램에 대한 링크를 제공하는 this 게시물을 살펴볼 것을 제안합니다.

관련 문제