2012-05-09 7 views
14

こんにちは、私はviewbag.butを使用してデータのリストを表示する必要があります。私はこの事を試してみました

私を助けてください..:ViewBagを使用してリストを表示する方法

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

しかし、これは値を表示し、Model.Personがdoesnot含まれている」というエラーを与えていない:

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

とビュー内の

まず用defibition()」

答えて

40

ビューでは元のタイプにキャストする必要があります。キャストなしでは、それは単なる物です。

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

ViewBagはC#4のダイナミックタイプです。キャストされていなければ、それから返されたエンティティも動的です。しかし、.First()や他のすべてのLinqの拡張メソッドはdo not work with dynamicsです。

編集 - コメントに対処する:

あなたは全体のリストを表示したい場合は、それはこのような単純なのです:)1次回(のような

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

拡張メソッドは動作しませんが、この意志。コントローラでは

::これは、それがどのように見えるかで、一緒にすべてを置くために

+0

ちょっと高価な私は値を持っていますが、どのように私はリストに割り当てられているすべての値を取得できますか教えてください? – user1274646

1

ちょうど

List<Person> 
を置きます

をViewBagに、ビューにキャストするとリストに戻る

+0

...私がやったとそれが働いた何

です。あなたはViewBag.dataだけを表示すべきですか? – user1274646

+0

ああ、それは意味している。私のモバイルからの投稿はあまりにも早く送信され、括弧は取り除かれました。修正のための編集を参照してください。ごめんなさい。あなたはあなたのビューでSystem.Linqを使用する必要があります。 – 360Airwalk

+0

申し訳ありません、コメントを削除しました。 – 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

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

私は同じ問題を抱えていました。私は検索と検索を行っていましたが、結果はありませんでした。
私は頭の中に頭を置きます。私は以下の解決策を考え出しました。 特定の属性は、コードの下にあなたのケースでの使用には以下のコード

@Lst.FirstOrDefault().FirstName 

を使用表示するには、このコード

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

を追加するページの先頭に表示するページ

でこれを試してみてください。

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

希望します...

0

これは私がUを取得していない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]; 
.............. 
.............. 

}

関連する問題