2013-08-01 9 views
7

मैं एक सूची हैLinq नियंत्रक में MVC दृश्य में काम नहीं करता है

List<string> myList = new List<string>(); 
myList.Add(aString); 

ViewBag.linkList = myList; 

और फिर दृश्य में मैं

@ViewBag.linkList.First() 

करने के लिए कोशिश कर रहा हूँ और यह मुझे त्रुटि दे रहा है: 'System.Collections.Generic.List' के लिए एक परिभाषा शामिल नहीं है 'प्रथम'

तो मुझे क्या करना

@ViewBag.linkList[0]

यह ठीक काम करता है।

मैंने पहले से ही @using System.Linq को देखा है। क्या मैं कुछ भूल रहा हूँ? क्या लिंक दृश्य के अंदर काम करता है?

+2

यह आपके उत्तर के बारे में नहीं है, बस एक सुझाव .. मुझे लगता है कि सबसे अच्छा तरीका व्यूबैग नहीं है, शोध ViewModel .. – yusuf

+0

इसके अलावा, आपका विचार इस तरह तर्क के लिए जगह नहीं है। –

उत्तर

9

ViewBag गतिशील है। First()IEnumerable<T> पर एक विस्तार विधि है। विस्तार विधियां गतिशील संदर्भों पर काम नहीं करती हैं।

First() पर कॉल करने से पहले आपको अपनी सूची IEnumerable<string> पर पहली बार डालना होगा।

@((ViewBag.linkList as IEnumerable<string>).First()) 

ध्यान दें कि सादा IEnumerable काम नहीं करेगा, .First() के बाद से इसके लिए परिभाषित नहीं है।

+0

यह काम कर रहा है, धन्यवाद। –

1

IEnumerable<T> करने के लिए इसे कास्टिंग, इस तरह का प्रयास करें:

@((IEnumerable<string>)ViewBag).linkList.First() 

या List<string> रहे हैं:

@((List<string>)ViewBag).linkList.First() 

ViewBag एक dynamic वस्तु ... विशेष रूप से, एक ExpandoObject है। मुझे लगता है कि गतिशील बांधने वाले को मूल प्रकार की पहचान करने में कठिनाई हो रही है।

+0

किसी भी तरह यह कलाकार काम नहीं करता है, लेकिन @ ((ViewBag.linkList IENumerable के रूप में)। सबसे पहले()) काम करता है। –

1

आपको व्यूमोडेल के माध्यम से सूची में दृश्य को पास करना चाहिए। अपने सबसे सरल रूप में नियंत्रक से दृश्य में सूची को पास करें। return View(myList);

दृश्य में पृष्ठ के शीर्ष पर @model = List<string> जोड़ें। फिर आप जिस आइटम को चाहते हैं उसे पाने के लिए मॉडल.फर्स्ट() मॉडल। फर्स्ट() का उपयोग कर सकते हैं।

व्यूमोडल्स कक्षाओं या structs, या जूट सरल डेटा प्रकार के रूप में बनाया जा सकता है, हालांकि लाभ यह है कि वे दृश्य में आने पर दृढ़ता से टाइप किए जाते हैं।

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