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

Orchardcms Orchard CMS:从视图中获取字段值的正确方法?,orchardcms,Orchardcms,我有ContainerWidget和带有ShowAllLinkCaption字段的自定义容器类型。 现在我只有一个解决方案,而且看起来很难看。 在容器小部件视图上获取此字段值的正确方法是什么 @*Latest news widget*@ @using Orchard.ContentManagement @using Orchard.Utility.Extensions @{ var contentId = (int)Model.ContentItem.ContainerWidgetPar

我有ContainerWidget和带有ShowAllLinkCaption字段的自定义容器类型。 现在我只有一个解决方案,而且看起来很难看。 在容器小部件视图上获取此字段值的正确方法是什么

@*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))
@*最新新闻小部件*@
@使用Orchard.ContentManagement
@使用Orchard.Utility.Extensions
@{
var contentId=(int)Model.ContentItem.ContainerWidgetPart.Record.ContainerId;
IContentManager contentManager=WorkContext.Resolve();
var customListContentItem=contentManager.Get(contentId);
var showAllLinkCaptionField=customListContentItem.Parts.SelectMany(p=>p.Fields)。首先(f=>f.Name==“ShowAllLinkCaption”);
var showAllLinkCaptionText=showAllLinkCaptionField.Storage.Get(null);
}
@显示(Model.Content)
@Html.Link(showAllLinkCaptionText,Url.ItemDisplayUrl(customListContentItem))

ContentItem是一个动态对象,允许直接访问部件和字段,而无需使用这些数据。您只需要知道包含该字段的部件的名称,就可以执行以下操作:

someContentItem.ThePartThatHasTheField.TheField.TheNameOfThePropertyYouWantToAccess

贝特朗提供了更出色的帮助。。。我想知道如果没有他的帮助怎么可能弄清楚这件事!伯特兰给了我一个很好的安瑟,这正是我想要的!有点像果园的“圣杯”,是什么让果园如此伟大。。。但是你知道有一个“但是”来了,不是吗我有:
currentUser.UserCulturePart.Fields[0].Value并且工作得很好。我还有一个foreach循环,它通过这个内容部分的字段循环并列出它的名称。只有1个字段名为“Culture”。但如果我尝试这样访问它:
currentUser.UserCulturePart.Culture.Value
它抛出一个不包含区域性的错误。。。有什么想法吗?关于我最后的评论。我的migrations.cs中有.WithField(“文化”)。。。保存它们时放.Trim()可能是一件值得注意的事情?由于这很难调试,因此不可能使用带有空格的字段名。我已经设法在字段名中用空格来破译一些代码。很好,请提交一个bug。