5
Mam ContainerWidget i niestandardowy typ kontenera z pola ShowAllLinkCaption. Teraz mam tylko jedno rozwiązanie i wygląda na brzydkie. Jaki jest właściwy sposób uzyskania wartości tego pola w widoku Widoku kontenera?Orchard CMS: Właściwy sposób na uzyskanie wartości pola z widoku?
@*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))
Bardziej znakomita pomoc Bertranda ... Zastanawiam się, jak można to zrozumieć bez jego pomocy! –
Bertrand dał świetnego anwsera, który był dokładnie tym, czego szukałem! Coś w rodzaju "Świętego Graala" Orcharda i co sprawia, że Orchard jest tak wielki ... Ale wiedziałeś, że nadchodzi "ale", prawda? ;) Mam to: 'currentUser.UserCulturePart.Fields [0] .Value;' I działa świetnie. Mam również pętlę foreach, która wykonuje pętle przez pola tej części treści i wyświetla jej nazwy. To tylko 1 pole o nazwie "Kultura". Ale jeśli próbuję uzyskać do niego dostęp w ten sposób: 'currentUser.UserCulturePart.Culture.Value' to wyrzuca błąd, który nie zawiera kultury ... Jakieś pomysły? –
Odnośnie mojego ostatniego komentarza. Miałem .WithField ("Culture") w mojej migrationations.cs ... może dobrze napisać, aby umieścić .Trim() podczas ich zapisywania? Ponieważ jest to bardzo trudne do debugowania i używanie nazw pól, które zawierają spacje, jest niemożliwe. Udało mi się już złamać kod za pomocą spacji w nazwach pól. –