2012-05-09 10 views
14

का उपयोग करके एक सूची को प्रदर्शित करने के लिए कैसे करें हाय मुझे viewbag का उपयोग कर डेटा की एक सूची दिखाने की आवश्यकता है। लेकिन मैं इसे करने में सक्षम नहीं हूं।
कृपया मेरी मदद करो ..
मैं इस बात की कोशिश की:व्यूबैग

ICollection<Learner> list = new HobbyHomeService().FetchLearner(); 
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list); 
ViewBag.data = personlist; 

और देखने के अंदर:

<td>@ViewBag.data.First().FirstName</td> 

लेकिन इस मूल्य दिखाई नहीं देता और कहा, "Model.Person doesnot शामिल त्रुटि देता है प्रथम के लिए एक defibition() "

उत्तर

40

अपने विचार में, आपको इसे मूल प्रकार पर वापस डालना होगा। कलाकार के बिना, यह सिर्फ एक वस्तु है।

<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td> 

व्यूबैग एक सी # 4 गतिशील प्रकार है। उसमें से लौटाई गई संस्थाएं तब तक गतिशील होती हैं जब तक कि कास्ट न हो जाए। हालांकि, एक्सटेंशन विधियों जैसे। फर्स्ट() और अन्य सभी लिंक do not work with dynamics

संपादित करें - टिप्पणी को संबोधित करने के:

आप पूरी सूची प्रदर्शित करना चाहते हैं, यह इस रूप में सरल है:,

प्रथम तरह
foreach (var person in ViewBag.data) 
{ 
    <li>@person.FirstName</li> 
} 

एक्सटेंशन तरीकों() काम नहीं करेगा लेकिन यह करेगा।

नियंत्रक में:

List<Fund> fundList = db.Funds.ToList(); 
ViewBag.Funds = fundList; 
तब ध्यान में रखते हुए

:

@foreach (var item in ViewBag.Funds) 
{ 
    <span> @item.FundName </span> 
} 
+0

हे थेंक्स मुझे मूल्य मिला लेकिन क्या आप मुझे बता सकते हैं कि मैं सूची में निर्दिष्ट सभी मूल्य कैसे प्राप्त कर सकता हूं? – user1274646

1

बस एक

List<Person> 
डाल

व्यूबैग में और दृश्य में इसे वापस

+0

मैं यू नहीं मिला। आप कहने का मतलब है कि मुझे केवल ViewBag.data प्रदर्शित करना चाहिए या आपका मतलब कुछ और .. ..? – user1274646

+0

ओह इसका मतलब है। मेरे मोबाइल से पोस्टिंग पोस्ट बहुत जल्दी भेजा गया था और ब्रैकेट अलग हो गए थे। सुधार के लिए संपादन देखें। माफ़ कीजिये। आपको अपने दृश्य – 360Airwalk

+0

में सिस्टम.लिंक का उपयोग करने की आवश्यकता हो सकती है क्षमा करें, अभी टिप्पणी हटा दी गई है। – Leniency

3

यह सब एक साथ रखा करने के लिए, इस तरह यह क्या दिखना चाहिए है व्यूबैग डेटा IENumerable <> सूची

@{ 
var getlist= ViewBag.Listdata as IEnumerable<myproject.models.listmodel>; 

    foreach (var item in getlist){ //using foreach 
<span>item .name</span> 
} 

} 

//---------or just write name inside the getlist 
<span>getlist[0].name</span> 
0
 //controller You can use this way 

    public ActionResult Index() 
    { 
     List<Fund> fundList = db.Funds.ToList(); 
    ViewBag.Funds = fundList; 
     return View(); 
    } 




<--View ; You can use this way html--> 

@foreach (var item in (List<Fund>)ViewBag.Funds) 
{ 
    <p>@item.firtname</p> 
} 
+0

कृपया अपने कोड में कुछ स्पष्टीकरण जोड़ें। – jurgemaister

2

बस का उपयोग कर

2

मुझे एक ही समस्या थी और मैं खोज और खोज .. लेकिन कोई परिणाम नहीं मिला।
इसलिए मैंने अपना दिमाग ड्राइव पर रखा। और मैं नीचे दिए गए समाधान के साथ आया था। प्रदर्शित करने के लिए विशेष विशेषता कोड के नीचे अपने मामले उपयोग में नीचे दिए गए कोड

@Lst.FirstOrDefault().FirstName 

का उपयोग इस कोड

@{ 
     var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>; 
    } 

जोड़ने पृष्ठ के शीर्ष पर देखें पृष्ठ

में यह प्रयास करें।

<td>@Lst.FirstOrDefault().FirstName </td> 

आशा है कि इससे मदद मिलती है ...

0

यह मैं क्या किया था और यह काम किया है ...

सी #

ViewBag.DisplaylList = listData; 

जावास्क्रिप्ट

var dispalyList= @Html.Raw(Json.Encode(this.ViewBag.DisplaylList)); 
for(var i=0;i<dispalyList.length; i++){ 

var row = dispalyList[i]; 
.............. 
.............. 

}

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