Orchard CMS:从视图中获取字段值的正确方法?

时间:2012-05-24 11:24:27

标签: orchardcms

我有使用ShowAllLinkCaption字段的ContainerWidget和自定义容器类型。 现在我只有一个解决方案,它看起来很难看。 在Container Widget视图上获取此字段值的正确方法是什么?

@*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))

1 个答案:

答案 0 :(得分:13)

ContentItem是一个动态对象,允许直接访问部分和字段,而不必使用那些丑陋的Lambda。您只需要知道具有该字段的部件的名称,您可以这样做:

someContentItem.ThePartThatHasTheField.TheField.TheNameOfThePropertyYouWantToAccess