2012-05-09 71 views
14

您好,我需要使用viewbag顯示數據列表,但我無法做到這一點。
請幫助我..
我想這件事情:如何使用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多年平均值含有對於前)的defibition(」

回答

40

在您看來,您必須將其重新轉換爲原始類型。沒有演員,這只是一個對象。

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

ViewBag是一個C#4動態類型。從它返回的實體也是動態的,除非強制轉換。但是,擴展方法如.First()和所有其他Linq的do not work with dynamics

編輯 - 解決意見:如果你想顯示整個列表

,它是如此簡單:

foreach (var person in ViewBag.data) 
{ 
    <li>@person.FirstName</li> 
} 

擴展方法。首先像()將無法正常工作,但這會。

+0

嗨thanx我得到的價值,但你能告訴我我如何獲取列表中分配的所有值? – user1274646

1

只要把

List<Person> 

放入ViewBag並在視圖中將它投回到列表

+0

我沒有得到ü。你的意思是說我應該只顯示ViewBag.data或你的意思是別的.. ?? – user1274646

+0

哦,這是有意思的。從我的手機發布帖子發送得太早,括號被刪除。請參閱編輯進行更正。抱歉。你可能需要在你的View – 360Airwalk

+0

中使用System.Linq。很抱歉,現在已刪除評論。 – Leniency

3

爲了把它放在一起,這是它應該是什麼樣子:

在控制器:

List<Fund> fundList = db.Funds.ToList(); 
ViewBag.Funds = fundList; 

然後在視圖:

@foreach (var item in ViewBag.Funds) 
{ 
    <span> @item.FundName </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

簡單地使用Viewbag數據爲IEnumerable <> list

@{ 
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> 
2

我有同樣的問題,我搜索和搜索..但沒有結果。
所以我把我的大腦放在驅動器上。我想出了下面的解決方案。在頁面的頭部查看頁面

嘗試這種添加以下代碼

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

顯示特定屬性使用下面的代碼

@Lst.FirstOrDefault().FirstName 

在下面的代碼的情況下使用。

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

希望這有助於...

0

這是我做過什麼和它的工作...

C#

ViewBag.DisplaylList = listData; 

的JavaScript

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

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

}