I have ContainerWidget and custom container type with ShowAllLinkCaption field. Now I have only one solution, and it's looks ugly. What is the right way to get this field value on a Container Widget View?
@*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))
ContentItem is a dynamic object that allows direct access to parts and fields without having to use those ugly Lambdas. You just need to know the name of the part that has the field, and you can do:
someContentItem.ThePartThatHasTheField.TheField.TheNameOfThePropertyYouWantToAccess
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With