2015-01-04 54 views
0

我使用內容選擇器字段創建了自定義零件。獲取Orchard中的自定義零件的媒體選擇器字段內容

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。這會給你真正的內容項目,你可以做As,這將讓你訪問內容項目的字段(那些存儲在Infoset上,內容項目記錄上)等。

這個或一個的過載和擴展方法應該這樣做:

_contentManager.Query<BackgroundPart>() 
+0

謝謝,這工作!爲了獲得該字段,可以使用情境選擇器類,因此也可以引用contentpicker項目嗎? –

+0

當然,但你的意思是媒體庫選取器,對不對? –

+0

是的,Media Picker的確如此。謝謝回覆。 –

相關問題