如何将对象列表从控制器传递到视图并访问每个对象的属性?

时间:2013-08-01 08:05:35

标签: asp.net asp.net-mvc-4

我尝试了很多东西,但我无法弄清楚如何去做。我从我的数据库中获取了一个对象列表,我实际上想要在视图中显示所有对象。 因此我得到了我的对象列表:

List<Contact> ListeContacts = StructureData.DonneListeContact(NumDossier);

然后我将我的列表传递给ViewBag:

ViewBag.ListeContacts = ListeContacts;

所以现在我想在视图中的select中显示每个对象的所有属性,所以我尝试了这样:

<select>
    @foreach (System.Data.DataRow Contact in ViewBag.ListeContact)
         {
           <option>@Html.DisplayName(Contact["nom_contact"].ToString())</option>
         }
</select>

但它在foreach上显示了一个“NullReferenceExeption”。网上有很多例子,但都是用EntityFramework完成的,因此在使用模型数据结构时很简单。有人有想法吗?

2 个答案:

答案 0 :(得分:1)

你试过了吗?

<select>
    @foreach (var contact in ViewBag.ListeContacts)
         {
           <option>@Html.DisplayName(contact["nom_contact"].ToString())</option>
         }
</select>

看起来你有list of Contact并且你正试图从集合中获得DataRow

编辑:还要确保您引用的媒体资源存在,即nom_contact

答案 1 :(得分:0)

您已分配给ViewBag.ListeContacts但采用ViewBag.ListeContact。你错过了变量名末尾的字母“s”。

然后您可以将其转发回List,如下所示。

List<Contact> ListeContacts = (List<Contact>)ViewBag.ListeContacts