2015-01-04 1 views
0

콘텐츠 선택기 필드를 사용하여 사용자 지정 파트를 만들었습니다.과수원에서 사용자 지정 파트의 미디어 선택 도구 필드 콘텐츠 가져 오기

public int UpdateFrom1() 
    { 
     ContentDefinitionManager.AlterPartDefinition("BackgroundPart", 
      builder => builder.WithField("BackgroundImage", 
       fieldBuilder => fieldBuilder 
        .OfType("MediaPickerField") 
        .WithDisplayName("Background Image"))); 

     return 2; 
    } 

    public int UpdateFrom2() 
    { 
     ContentDefinitionManager.AlterTypeDefinition("Background", cfg => cfg    
      .WithPart("BackgroundPart") 
      .Creatable() 
      .Indexed()); 
     return 3; 
    } 

데이터를 얻기위한 서비스 코드 :이 작동

public class BackgroundService : IBackgroundService 
{  
    private readonly IRepository<BackgroundPartRecord> _repository; 

    public BackgroundService(
     IRepository<BackgroundPartRecord> repository, 
     ISignals signals) 
    { 
     _repository = repository;   
    } 

    public IEnumerable<BackgroundPartRecord> Get() 
    { 
     return _repository.Table; 
    }  
} 

(나는이 유형의 새 항목을 만들 때 콘텐츠를 선택할 수 있습니다).

이제 모든 유형의 항목 목록을 가져오고 싶습니다. 나는 그것에 대한 서비스를 만들었고 나는 생성 된 아이템 목록을 얻습니다. 그러나 목록의 항목에는 미디어 선택기 필드가 없습니다. 이 콘텐츠를 얻으려면 어떻게해야합니까? 내 모듈의 FilterProvider 클래스에서 OnResultExecuting 메서드를 사용하고 싶습니다.

+0

쿼리 코드가 표시되지 않았습니다. BackGroundPart를 쿼리하고 있습니까? –

+0

내 질문을 백그라운드 코드를 사용하여 업데이트했습니다. –

답변

1

리포지토리 API를 사용 중이므로 작동하지 않습니다. 저장소는 내부적으로 사용되는 저수준 API이지만 거의 모듈에 의해 사용되지 않는 경우는 거의 없습니다. 그 이유 중 하나는 콘텐츠 항목을 얻지 못하고 일부 레코드 만 얻게된다는 것입니다.

대신 ContentManager의 쿼리 API 중 하나를 사용해야합니다. 그러면 콘텐츠 항목의 필드 (콘텐츠 항목 레코드에있는 Infoset에 저장되어있는 콘텐츠 항목)에 액세스 할 수있는 As의 실제 콘텐츠 항목이 제공됩니다.

과부하 및 확장 방법 중 트릭을 수행해야합니다.

_contentManager.Query<BackgroundPart>() 
+0

감사합니다, 그 작품! 필드를 얻으려면 contet picker 클래스를 사용하는 것이 좋으며, contentpicker 프로젝트에 대한 참조도 사용할 수 있습니까? –

+0

물론, 미디어 라이브러리 피커 (Media Library Picker)를 사용하셨습니까? –

+0

예, 실제로 미디어 선택 도구입니다. 답장을 보내 주셔서 감사합니다. –