2012-05-24 8 views
5

मेरे पास 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)) 

उत्तर

13

ContentItem एक गतिशील वस्तु है जो उन बदसूरत Lambdas का उपयोग किए बिना भागों और क्षेत्रों तक सीधे पहुंच की अनुमति देता है। आपको केवल उस हिस्से के नाम को जानने की आवश्यकता है जिसमें फ़ील्ड है, और आप यह कर सकते हैं:

someContentItem.ThePartThatHasTheField.TheField.TheNameOfThePropertyYouWantToAccess 
+0

बर्ट्रैंड से अधिक उत्कृष्ट सहायता ... मुझे आश्चर्य है कि उसकी सहायता के बिना इसे कैसे निकालना संभव होगा! –

+0

बर्ट्रैंड ने एक महान अनुयायी दिया है जो मैं वही था जो मैं ढूंढ रहा था! ऑर्चर्ड के "पवित्र Grail" का क्रमबद्ध करें और ऑर्चर्ड इतना महान बनाता है ... लेकिन आपको पता था कि "लेकिन" आ रहा था, है ना? ;) मेरे पास यह है: 'currentUser.UserCulturePart.Fields [0]। वैल्यू;' और यह बहुत अच्छा काम कर रहा है। मेरे पास एक फ़ोरैच लूप भी है जो इस सामग्री भाग के फ़ील्ड के माध्यम से loops और इसके नाम सूचीबद्ध करता है। यह "संस्कृति" नाम के साथ केवल 1 फ़ील्ड है। लेकिन अगर मैं इसे इस तरह एक्सेस करने का प्रयास करता हूं: 'currentUser.UserCulturePart.Culture.Value' यह एक त्रुटि उत्पन्न करता है जिसमें इसमें संस्कृति नहीं है ... कोई विचार? मेरी पिछली टिप्पणी के बारे में –

+0

। मेरे पास थाइथफिल्ड ("संस्कृति") मेरे migrations.cs में ... शायद ध्यान देने के लिए एक अच्छी बात है। Trim() उन्हें बचाने के दौरान? चूंकि उन क्षेत्रों के नामों को डीबग करना और उनका उपयोग करना बहुत मुश्किल है, जिनमें रिक्त स्थान असंभव हैं। मैं फ़ील्ड नामों में रिक्त स्थान के साथ कुछ कोड तोड़ने में कामयाब रहा हूं। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^