将自定义类对象转换为IEnuerable,以便在foreach语句中使用

时间:2012-11-23 12:01:21

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

我有一名自定义班级学生,如下所示:

     public class Student
     {
         public string Name {get;set;}
         public string GuardianName {get;set;}
     }

现在,我有数据来自以下数据结构

      IList<Student> studInfo=new List<Student>();

我已将此数据放入viewbag

      Viewbag.db=studInfo;

在视图页面上,当我尝试使用

    <table>
       <thead>
            <tr>
                 <td>Name</td>
                 <td>Guardian Name</td>
            </tr>
        </thead>

     @foreach(var stud in ViewBag.db)
     {
          <tr>
              <td>@stud.Name</td>
              <td>@stud.GuardianName</td>
          </tr>

     }
    </table>

有一个错误,说

Cannot implicitly convert type 'PuneUniversity.StudInfo.Student' to 'System.Collections.IEnumerable'

PuneUniversity是我的命名空间,StudInfo是应用程序名称。请建议我一个解决方案。  提前致谢

1 个答案:

答案 0 :(得分:1)

以下行不太可能编译:

IList<Student> studInfo = new IList<Student>();

您无法创建接口实例。所以我猜你的实际代码与你在这里显示的不同。

另外,我建议您使用强类型视图而不是ViewBag:

public ActionResult SomeAction()
{
    IList<Student> students = new List<Student>();
    students.Add(new Student { Name = "foo", GuardianName = "bar" });
    return View(students);
}

现在让你的观点强烈输入:

@model IEnumerable<Student>

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Guardian Name</th>
        </tr>
    </thead>
    <tbody>
    @foreach(var stud in Model)
    {
        <tr>
            <td>@stud.Name</td>
            <td>@stud.GuardianName</td>
        </tr>
    }
    </tbody>
</table>