5

ContainerWidgetと、ShowAllLinkCaptionフィールドを持つカスタムコンテナタイプがあります。今、私には1つの解決策しかありません、そしてそれは醜いように見えます。コンテナウィジェットビューでこのフィールド値を取得する正しい方法は何ですか?

@*Latest news widget*@
@using Orchard.ContentManagement
@using Orchard.Utility.Extensions
@{
    var contentId = (int)Model.ContentItem.ContainerWidgetPart.Record.ContainerId;
    IContentManager contentManager = WorkContext.Resolve<IContentManager>();    
    var customListContentItem = contentManager.Get(contentId);
    var showAllLinkCaptionField = customListContentItem.Parts.SelectMany(p => p.Fields).First(f => f.Name == "ShowAllLinkCaption");
    var showAllLinkCaptionText = showAllLinkCaptionField.Storage.Get<string>(null);   
}
@Display(Model.Content)
@Html.Link(showAllLinkCaptionText, Url.ItemDisplayUrl(customListContentItem))
4

1 に答える 1

13

ContentItemは、これらの醜いラムダを使用せずにパーツやフィールドに直接アクセスできる動的オブジェクトです。フィールドがあるパーツの名前を知る必要があるだけで、次のことができます。

someContentItem.ThePartThatHasTheField.TheField.TheNameOfThePropertyYouWantToAccess
于 2012-05-24T17:05:01.633 に答える